Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/anfegomezver/spectrum24ghz/llms.txt

Use this file to discover all available pages before exploring further.

The Canales tab (tab index 1) gives you a bird’s-eye view of how 2.4 GHz spectrum is being consumed across every channel in the band. Rather than showing individual networks, it groups all discovered access points by their channel and visualises congestion as a saturation percentage. This makes it easy to spot crowded channels and identify clear frequencies before deploying a new access point or changing an existing one’s channel.

Channel List Construction

The full list of 13 channels is built once at startup in buildAllChannels() and never destroyed — only the networks list inside each WifiChannel is cleared and repopulated after every scan.
private List<WifiChannel> buildAllChannels() {
    List<WifiChannel> list = new ArrayList<>();
    for (int ch = 1; ch <= 13; ch++) {
        int freq = 2407 + ch * 5;
        list.add(new WifiChannel(ch, freq, "Universal", false, ch == 1 || ch == 6 || ch == 11));
    }
    return list;
}
Channels 1, 6, and 11 are instantiated with isPrime = true. These are the three non-overlapping channels in the 2.4 GHz band — they do not interfere with each other when used at standard 20 MHz width, making them the universally recommended choices for wireless deployments.

Channel Frequency Reference

Each channel’s centre frequency is fixed by the formula 2407 + channel × 5 MHz:
ChannelFrequency (MHz)isPrime
12412
22417
32422
42427
52432
62437
72442
82447
92452
102457
112462
122467
132472
Channel 14 (2484 MHz) is handled by the frequency-to-channel conversion function but is not included in buildAllChannels() — it is only legal in Japan and extremely rare in practice.

Channel Card Layout

The ChannelListAdapter binds each WifiChannel to a card showing:
  • Channel number badge — a colored circular badge (tinted to match saturation level).
  • “Canal N” — channel label.
  • Frequency in MHz — e.g. 2437 MHz.
  • Network count"Sin redes" (0), "1 red" (1), or "N redes" (2+).
  • Saturation percentage — e.g. Saturación: 50%, colored by tier.

Saturation Formula

Saturation is calculated with a simple linear scale capped at 100 %:
int saturation = Math.min(count * 25, 100);
Networks on channelSaturation
00 %
125 %
250 %
375 %
4 or more100 %

Saturation Color Coding

The saturation percentage determines the color of both the channel badge and the saturation label text:
Saturation RangeColor TokenMeaning
0 %sig_strong (green)Empty — ideal
1 %–30 %sig_strong (green)Low — recommended
31 %–60 %sig_medium (yellow/orange)Moderate — stable
> 60 %sig_weak (red)High — congested
if (saturation == 0 || saturation <= 30) {
    satColorRes = R.color.sig_strong;
} else if (saturation <= 60) {
    satColorRes = R.color.sig_medium;
} else {
    satColorRes = R.color.sig_weak;
}

Channel Detail Dialog

Tapping any channel card calls showChannelDetailsDialog(WifiChannel ch), which opens an AlertDialog containing:
FieldContent
FrecuenciaCentre frequency in MHz
SaturaciónPercentage value and status label
Redes DetectadasTotal network count on this channel
Listado de RedesEach SSID with its RSSI in dBm
Networks are listed in descending RSSI order (strongest first), matching the same ordering applied in populateNetworks().

Status Labels

The status label shown inside the detail dialog is derived from the same saturation thresholds used for color coding:
SaturationStatus label
0 %Libre / Óptimo
1 %–30 %Bajo / Recomendado
31 %–60 %Medio / Estable
> 60 %Crítico / Saturado

The WifiChannel Model

public class WifiChannel {
    private final int    channel;       // 1–13
    private final int    frequencyMhz;  // Centre frequency, e.g. 2437
    private final String regionLabel;   // Always "Universal" for ch 1–13
    private final boolean isRestricted; // Always false for ch 1–13
    private final boolean isPrime;      // true for ch 1, 6, 11
    private final List<ScannedNetwork> networks; // Populated after each scan
}
The networks list is cleared at the start of every scan and re-populated by populateNetworks(), which assigns each ScannedNetwork to the WifiChannel whose channel number matches the result of frecuenciaACanal(frequency).
For a new access point or router, always select channel 1, 6, or 11. These three non-overlapping channels are the only ones in the 2.4 GHz band that do not interfere with each other at standard 20 MHz width. Choosing any other channel means your AP will partially overlap with neighbouring channels on both sides, increasing co-channel interference. Look for the channel showing Libre / Óptimo or Bajo / Recomendado in green.

Build docs developers (and LLMs) love