Fix wifi with hidden networks

Ok, first things first.

You will need to have a way to ssh into your gameshell.
I found 2 different ways that worked for me.

A) Buy a small/cheap portable router that you can set to bridge mode, connect it to your main network by ethernet and then connect your gameshell to that. Maybe this will solve all your problems/maybe not. Either way, even if it does work… the range is limited.

B) Temporarily change your router settings to unhide your network, maybe disable your 5GHz network temporarily and only have your 2.4GHz network running. The important thing is to keep your network name the same as you will have it once hidden again and keep the same WPA2 password. Once again —IMPORTANT— keep the SSID name and WPA2 password the same as what you will use once everything is done.

Once you have your network unhidden you will need to connect to your network. Hopefully you can do this through the settings as normal. It took about a minute after my router rebooted with the new settings before my gameshell would connect.

If you still can’t connect to your home network (even unhidden and 5GHz disabled) then you will need to purchase a cheap portable router that can work in bridge mode (like I mentioned in step A)

OK, now that you are connected to your internet you will need to ssh into your gameshell.

  1. Open up a command prompt (windows) or Terminal (OSX) and type
    [ssh cpi@xxx.xxx.xxx.xxx] where the xxx is your ip address. Check out the Tiny cloud program on your gameshell for specifics.

  2. Type “yes” when it gives an “authenticity of host” warning… it is just making sure you know what you are doing.

  3. Next type [sudo wicd-curses] into the terminal

  4. This will bring up the curses (graphical) interface for wicd
    WICD-1

  5. shift-p will bring up external programs advances settings… don’t really need to mess with this but this is how mine looks

WICD-2%20shift-p

  1. press h at any time for help

  2. press “r” refresh the available network list — important if you are using a different router in bridge mode

  3. once the network you want to connect to is listed (or already connected to if you were able to after un-hiding it) you need to check the properties.

  4. use the up/down arrow keys to highlight the network you want to work on then once it is highlighted, press the right arrow key

WICD-3%20Settings

  1. On the next window, make your settings look like mine… the important part is to use the arrow keys and press space to select “X” the

—“Use these settings for all networks sharing this essid"

—“Automatically connect”

—“Use Encryption”

Then move down to “Key” and type in your wireless password

Press “S” for save, and you are done (you will need to use the up arrow to leave the key field before pressing “S” otherwise you will just add an “s” to your password.

  1. Next, (maybe unnecessary since you unhid the network already) is to press “shift-I” to scan for hidden networks. Type in your network ssid then the password. This is just to make sure once you hide the network again, it can still be “found” by name correctly.

WICD-4%20shift-I

Now, you just need to exit (press Q) and then set your router so that the network is hidden again.

You might also want to reboot your gameshell, but I found it unnecessary.

** Big point to say again is that you HAVE to keep your ssid name and wpa2 password the same when hidden as when it was visible.

Hope this helps and is not too confusing.

Please let me know if you do have any questions or run into problems.

2 Likes

My GameShell doesn’t find more than one or two hotspots and I cannot see or connect to my main router SSID, so I tried your solution.

But this is what I get when I try to execute wicd-curses:

root@clockworkpi:/home/cpi# wicd-curses
Traceback (most recent call last):
File “/usr/share/wicd/curses/wicd-curses.py”, line 1311, in
main()
File “/usr/share/wicd/curses/wicd-curses.py”, line 1228, in main
ui.run_wrapper(run)
File “/usr/lib/python2.7/dist-packages/urwid/display_common.py”, line 764, in run_wrapper
return fn()
File “/usr/share/wicd/curses/wicd-curses.py”, line 97, in wrapper
return func(*args, **kargs)
File “/usr/share/wicd/curses/wicd-curses.py”, line 1238, in run
app = appGUI()
File “/usr/share/wicd/curses/wicd-curses.py”, line 757, in init
self.update_status()
File “/usr/share/wicd/curses/wicd-curses.py”, line 97, in wrapper
return func(*args, **kargs)
File “/usr/share/wicd/curses/wicd-curses.py”, line 927, in update_status
self.set_status):
File “/usr/share/wicd/curses/wicd-curses.py”, line 97, in wrapper
return func(*args, **kargs)
File “/usr/share/wicd/curses/wicd-curses.py”, line 175, in check_for_wireless
(‘$A’, network).replace
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc3 in position 13: ordinal not in range(128)

Any idea why?

This is truly infurating. Sadly the only way right know for me to connect the GS to a WiFi network is activating the hotspot on my iPhone and this is not a solution in the long term because I need to connect both from my PC and my GS to the 4G data plan of my phone.

I also experienced unexpected reboots when I tried to scan for WiFi networks in the launcher.

Anyways, why doesn’t this device detect 2.4G/5G dual networks?

What OS are you using?
I know I still have issues getting curses to work correctly in Windows (I usually use a linux distro on a usb drive when I need to use curses on my windows machine).

If you are using OSX, please show a screen shot so I can see what it looks like.

Just remember I am not a python or curses expert by ANY means

edit… I just checked out some things and it looks like you are using the ubuntu linux shell in windows 10. I have never gotten that to work well and find using ubuntu running off of a usb stick better.

In fact I was using ssh win32 binaries in PowerShell and I also tried with PuTTY, but the results were the same. I think my problem is actually a bug (https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1640190.html), but I don’t know why it happens to me and not to other people. It could be also related to special characters in one or many of the SSIDs.

Anyways today I discovered that my GS finds all the wireless networks at the office (and it’s crowded of wifi AP), even 2.4/5Ghz compatible wireless networks, but almost none at home. This is really weird. Could be someone’s SSID messing with wicd-curses and the WiFi scanner?

Today I managed to make wicd-curses to work with MobaXTerm (which is based on cygwin) avoiding the encoding error, but I have the same problem that inside the Wi-Fi scanner option of the launcher: it show every wireless network at the office but none at home.

Why does this happen? Anyways when I connect to the Wi-Fi network at my workplace, I cannot ssh to the IP address of the device, so it 's like it wasn’t connected at all to the router.

Could be the WiFi chipset of my device defective? Why does it work with my iPhone’s hotspot but not with other APs?

Do you have your home network un-hidden?
I know I had to temporarily unhide my network to ssh into it then make the changes I mentioned above before I could re-hide the network as normal.

Yes, all the wireless networks that I’m talking about are unhidden. I have also thought that it could happen because I have mesh Wi-Fi system at home (it’s a Netgear ORBI router) at that could be messing with the radio reception of the GameShell. But this is just a mere hypothesis.

Interesting enough, if I enable the Wi-Fi network of my cable-modem (I have both a cable-modem and a ORBI router which is connected to the cable-modem) I can see and connect to its AP, but it gives me a public IP address (i guess no NAT support implied) and I don’t want to expose the port 22 to every botnet on the Internet.

For those who came here and are having the same problem, it seems to be a bug within wicd-curses that is caused by certain characters being in the SSID of the network the clockworkpi is connected to. In this case, the default name of an iPhone hotspot is “[Your Name]'s iPhone”, and the apostrophe causes the bug. Renaming your iPhone to exclude the apostrophe gets around this.