Wie ermittle ich eine WLAN-Kanalnummer, die von einem WLAN-AP/Netzwerk verwendet wird?

Lesezeit: 3 Minuten

Benutzer-Avatar
Stan

Ich habe festgestellt, dass mehrere Android-WLAN-Apps (WiFi Manager, WiFi Analyzer) zusätzlich zu BSSID/SSID usw. eine Kanalnummer des WLAN-Netzwerks anzeigen. Aber ich kann keine Informationen darüber finden, wie sie das machen. Das einzige, was ich weiß, ist, dass ich eine WLAN-Frequenz bekommen kann. Vielleicht bestimmen sie einen Kanal, der dieser Frequenz entspricht? Gibt es überhaupt eine Möglichkeit, den Kanal des WLAN-Netzwerks in Android zu erkennen? Natürlich ist diese Info keine große Sache und ich kann ohne sie leben 🙂 aber ich bin trotzdem neugierig…

Benutzer-Avatar
Dante-May-Code

Entsprechend Radio-Elektronik.comKanalnummer ist wirklich mit der Frequenz verbunden.

CHA LOWER   CENTER  UPPER
NUM FREQ    FREQ    FREQ
    MHZ     MHZ     MHZ
  1 2401    2412    2423
  2 2406    2417    2428
  3 2411    2422    2433
  4 2416    2427    2438
  5 2421    2432    2443
  6 2426    2437    2448
  7 2431    2442    2453
  8 2436    2447    2458
  9 2441    2452    2463
 10 2446    2457    2468
 11 2451    2462    2473
 12 2456    2467    2478
 13 2461    2472    2483
 14 2473    2484    2495

Für Android, Scan-Ergebnis enthält die Frequenz des Kanals.

  • Ich habe festgestellt, dass mein Android-Telefon nur Mittenfrequenzen von ScanResult zurückgibt. Es sind also nur diese Mittenfrequenzen nutzbar. Darüber hinaus sind einige der unteren und oberen Frequenzen für verschiedene Kanäle gleich – werfen Sie einen Blick auf LF des 10. und 11. oder UF des 11. und LF des 14. Kanals.

    – Stan

    5. April 2011 um 19:55 Uhr

  • Die IEE-Spezifikation, die dies beschreibt, ist hier (Seite 566): standards.ieee.org/getieee802/download/802.11-2007.pdf Zusammenfassend beginnt die Mittenfrequenz bei 2412 MHz für Kanal 1 und erhöht sich um 5 MHz für jeden Kanal bis 13, wobei Kanal 14 speziell für Japan bestimmt ist

    – JeffE

    4. November 2011 um 21:09 Uhr


  • Was ist, wenn das Gerät mit dem 5,4-GHz- oder 4,9-GHz-Frequenzband verbunden ist?

    – Karan_Rana

    27. April 2013 um 6:35 Uhr

@SuppressWarnings("boxing")
private final static ArrayList<Integer> channelsFrequency = new ArrayList<Integer>(
        Arrays.asList(0, 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447,
                2452, 2457, 2462, 2467, 2472, 2484));

public static Integer getFrequencyFromChannel(int channel) {
    return channelsFrequency.get(channel);
}

public static int getChannelFromFrequency(int frequency) {
    return channelsFrequency.indexOf(Integer.valueOf(frequency));
}

  • Lemos, vielleicht könnten Sie mir helfen … Ich habe einen ähnlichen WLAN-Fall ungelöst … stackoverflow.com/questions/24357892/…

    – Gumuruh

    23. Juni 2014 um 3:31 Uhr

Sie können die Umrechnung mit ein paar Formeln ausdrücken, eine für jedes Band. Die Funktion gibt den Kanal der angegebenen Frequenz oder -1 zurück, falls die Frequenz keine gültige WLAN-Frequenz ist (2,4 GHz und 5 GHz).

public static int convertFrequencyToChannel(int freq) {
    if (freq >= 2412 && freq <= 2484) {
        return (freq - 2412) / 5 + 1;
    } else if (freq >= 5170 && freq <= 5825) {
        return (freq - 5170) / 5 + 34;
    } else {
        return -1;
    }
}

Es ist eine kompakte Möglichkeit, dasselbe zu tun.

  • Zur Frequenz 2484 der zurückgegebene Kanal ist 15 während es sein sollte 14.

    – Yoel

    19. März 2017 um 11:47 Uhr


Benutzer-Avatar
artm

Nach Norm [802.11-2012], gibt es eine einfachere Möglichkeit, die Kanalnummer aus der Frequenz zu ermitteln. Speziell,

channel_center_frequency = channel_starting_frequency + 5 * channel_number

Für das 5G-Band,
channel_number = 0, 1, …, 200; channel_starting_frequency = 5000 MHz.

Für das 2,4-G-Band,
channel_number = 1, 2, …, 13; channel_starting_frequency = 2047MHz.

Die Liste aller Kanalfrequenzen finden Sie unter WiFi-Kanäle


Dies in Code übersetzen – siehe iw Quelle:

int ieee80211_frequency_to_channel(int freq)
{
    if (freq == 2484)
        return 14;

    if (freq < 2484)
        return (freq - 2407) / 5;

    return freq/5 - 1000;
}

Benutzer-Avatar
Vishnu Haridas

Ergänzend zur Antwort von @artm ist hier ein aktualisierter Algorithmus im Linux-Quellcode zu finden:

int ieee80211_freq_khz_to_channel(u32 freq)
{
    /* TODO: just handle MHz for now */
    freq = KHZ_TO_MHZ(freq);

    /* see 802.11 17.3.8.3.2 and Annex J */
    if (freq == 2484)
        return 14;
    else if (freq < 2484)
        return (freq - 2407) / 5;
    else if (freq >= 4910 && freq <= 4980)
        return (freq - 4000) / 5;
    else if (freq < 5925)
        return (freq - 5000) / 5;
    else if (freq == 5935)
        return 2;
    else if (freq <= 45000) /* DMG band lower limit */
        /* see 802.11ax D6.1 27.3.22.2 */
        return (freq - 5950) / 5;
    else if (freq >= 58320 && freq <= 70200)
        return (freq - 56160) / 2160;
    else
        return 0;
}

Quelle: https://github.com/torvalds/linux/blob/master/net/wireless/util.c#L141Funktionsname: ieee80211_freq_khz_to_channel

1145840cookie-checkWie ermittle ich eine WLAN-Kanalnummer, die von einem WLAN-AP/Netzwerk verwendet wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy