Access Point Support

From SubPos
Jump to navigation Jump to search

Enabling SubPos works in nearly all access points that support multiple SSIDs. This allows you to use your existing SSID at the same time as the SubPos SSID. If your access point doesn't support this, you can still enable it, you just won't be able to change the SSID to something other than the SubPos encoded SSID.

If you confirm that this works on your model router, or you have issues, use the contact page to submit details.

Billion BiPAC 7800VDPX

Instructions here.

WRT Based Routers (e.g. ASUS DSL-AC68U)

Use the following invalid chars 0a 0d 22 2b 00 20 in the SSID coder. Copy the entire contents of the ASCII field (click in the textbox and press Ctrl+A, then press Ctrl+C). Paste this field into the SSID field of your router. The ASCII characters may appear blank, but they are there (you can confirm this by pasting the contents into a text editor).

Unfortunately some versions of DD-WRT (not OpenWRT) are not "out-of-the-box" supported at this stage due to the following check in the web interface's Javascript code:

function isValid(SSID) {
    for (i=0) ; i< SSID.length; i++) {
        ch = SSID.charAt(i);
        if (ch < ' ' || ch > '~') {
            alert('invalid ssid);
            return false;
        }
    }
    return true;
}

This code just checks if characters are human readable. The Wi-Fi standard states than an SSID is to be handled as an array of 32 octets, so the DD-WRT GUI is treating this in a non-standard way. However, if you have a browser that is capable of editing a web page's Javascript code, you can edit this function to just return true and it should now work, as the DD-WRT firmware treats the SSID properly as per the standard:

function isValid(SSID) {
    return true;
}

This Greasemonkey/Tampermonkey script should fix this issue.

OpenWRT implementations do not perform this check.

D-Link N300

Use the following invalid chars 0a 0d 22 2b 00 20 in the SSID coder. Copy the entire contents of the ASCII field (click in the textbox and press Ctrl+A, then press Ctrl+C). Paste this field into the SSID field of your router. The ASCII characters may appear blank, but they are there (you can confirm this by pasting the contents into a text editor).

Android Access Point

Doesn't support dual SSID, but can still be used for testing or to share the phone's position with other devices (an app will be required to update the SSID periodically with the phone's position).

Use the following invalid chars: 00

ESP8266 Modules

Use the following invalid chars 0a 0d 22 2b.

For the ESP modules, using the hex value from the javascript coder, you should use it to form the following string:

AT+CWSAP="[hex_string]","",[channel_num],0

For example:

AT+CWSAP="\x53\x50\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x68\x00\x00\x00\x00\x04\x00\x00\x00\x00","",1,0

You can then paste this string to a terminal emulator that supports escaped hex values, such as RealTerm. Check the EOL boxes like shown:

Realterm.png

Now click Send ASCII. The ESP modules will store this setting automatically to flash.

Troubleshooting

If you find that the client app doesn't work as intended with the positions you have encoded into the SSID, it might be due to the router not supporting a specific character.

To determine if this is the case, use a Wi-Fi scanning app that allows you to copy ASCII characters. Once copied, you can convert ASCII chars to hex and compare them to the values in the SSID Coder ASCII textbox. Alternativel on Linux you can output hex values and compare that to the hex textbox:

echo -ne `sudo iwlist wlan0 scan | grep ESSID | grep SPS | sed "s/^[ \t]*//" \
| sed -r 's/^.{7}//' | sed 's/.$//'` | hexdump -e '16/1 "%02x " "\n\n"'

Command Output (if multiple entries, ignore 32nd newline char "20"):

53 50 53 01 01 03 08 58 3b 01 08 58 3b 01 01 01
01 01 01 01 03 68 01 01 01 01 04 61 0f 73 60

Coder Output:

\x53\x50\x53\x01\x01\x03\x08\x58\x3b\x01\x08\x58\x3b\x01\x01\x01\x01\x01\x01\x01\x03\x68\x01\x01\x01\x01\x04\x61\x0f\x73\x60

When you encounter the first character from the left that doesn't match the original SSID coding, this character might be invalid for that access point. Add this hex value to the "Invalid values" textbox, re-encode the position and re-configure the SSID on your router. Repeat this method until the position can be decoded correctly.

The method in which the access point handles invalid characters will vary from model to model. Commonly however, invalid chars will either be truncated from that point, be replace with another character, removed from the SSID or not be accepted by the router all together (with an error message).

If you find that the access point will not accept the SSID, you will need to remove a single character from the end and re-enter the value. You need to keep doing this until the SSID is accepted by the router. At this point, the invalid character has been identified (and you can re-encode with the value specified in the invalid values box). You might find there is multiple invalid characters. In some instances only human readable characters will be accepted. If this is the case, you might have to "trick" the router into accepting the value (see WRT Based Routers or Access Point Augmentation). If this doesn't work, the router might not be supported.