Here’s how to set up Nokia N9 (running Meego 1.x Harmattan software) to jump the Great Firewall of China with Shadowsocks, a better alternative to VPN.
First and foremost this is a step-by-step guide on how to setup a Nokia N9 mobile phone (that uses the Harmattan or Meego operating system) to jump the great firewall of China.
The method used in this howto is Shadowsocks proxy. This creates several advantages over the traditional VPN method. Plus I’ve made a neat little icon for easy use.
Shadowsocks is a socks5 proxy that is designed to pass firewalls. While the Chinese government has found ways to crack down on VPN use, such as port blocking, this socks method has reportedly so far remained untouched.
In my experience the use of a VPN on a mobile phone while you are on the go is less withstanding to network outages and reconnection times could be long or at worst, manual. The performance of a proxy however is hardly affected on mobile use, it can often be easier to set up and even less power consuming according to my observations.
Furthermore this guide is well suited for anyone wanting to use such a proxy for any reason. As well as for other countries than China that block Facebook, YouTube, Twitter, etc. Also those with other types of cell phones such as Android phone or an iPod have the possibility of setting up a similar method.
Grab Shadowsocks
First grab the latest shadowsocks bundle from Github. Then unzip the package and edit ports, password and your server IP in “config.json“. If the server has a dynamic IP, use a DNS provider. Changing ports are an optional paranoia measure since China has a tendency to block default ports. But as far as I know these are not being blocked at the moment.
For the server side
Place these files on a machine preferably outside of China if your planning to do some wall hopping. Python needs to be installed for this to work, which shouldn’t be a problem for Linux users. For Mac OS X presumably you need to have Developer Tools installed, which you can grab from the App Store or somewhere else. Sorry I have no idea about windows, but surely it’s possible. Just make sure that the port you defined in “server_port” is open. On a machine that’s using iptables it would be as simple as adding this to your iptables.conf file:
-A INPUT -p tcp -m tcp --dport [PORT] -j ACCEPT
Then to fire it up from command line:
python server.py > local &
For the client side
You’ll be using the same set of files for the server and client. And to setup the quick launch icons you’ll be needing these four files:
startstop.sh
#!/bin/sh if pkill -f "/usr/bin/python /opt/shadowsocks/local.py"; then echo "killed" cat /opt/shadowsocks/off.desktop >/usr/share/applications/breakwall.desktop else echo "starting" cat /opt/shadowsocks/on.desktop >/usr/share/applications/breakwall.desktop /usr/bin/python /opt/shadowsocks/local.py > /dev/null 2>&1 & fi
off.desktop
[Desktop Entry] Type=Application Name=BreakWall Exec=/bin/sh /opt/shadowsocks/startstop.sh Icon=/usr/share/icons/hicolor/80x80/apps/breakwall.png
on.desktop
[Desktop Entry] Type=Application Name=FixWall Exec=/bin/sh /opt/shadowsocks/startstop.sh Icon=/usr/share/icons/hicolor/80x80/apps/fixwall.png
breakwall.desktop
[Desktop Entry] Type=Application Name=BreakWall Exec=/bin/sh /opt/shadowsocks/startstop.sh Icon=/usr/share/icons/hicolor/80x80/apps/breakwall.png
After that all we need is to put those files into place. Plug-in the device and select “Use as mass storage“. Drag and drop these files into the Documents folder of your device (the root folder wont work!).
1) A directory named “shadowsocks” with all the files from Github and startstop.sh, off.desktop, on.desktop, on.desktop
2) breakwall.desktop on it’s own
3) These two images:
Now that the files are in your phone, eject your device and plug it in again. Select “SDK mode” and open the “SDK Connect” app where you choose the “USB” option. On your computer, go to the terminal and connect with “ssh developer@[IP]“. Use the IP & password provided in the app.
Once your in your phone console, gain root access with the command “devel-su“. “default password is: rootme”
Now throw in these commands: “it’s safe to ignore some of the warnings”
mv /home/user/MyDocs/Documents/breakwall.png /usr/share/icons/hicolor/80×80/apps/
mv /home/user/MyDocs/Documents/fixwall.png /usr/share/icons/hicolor/80×80/apps/
mv /home/user/MyDocs/Documents/shadowsocks /opt
mv /home/user/MyDocs/Documents/breakwall.desktop /usr/share/applications/
chmod 666 /usr/share/applications/breakwall.desktop
Function
A shortcut icon with an American flag should appear on your desktop, named: “BreakWall“. Pressing it will start up the proxy in the background. Please note that it takes a little while for it to start working.
To use the proxy you will need to go to Settings -> Internet Connection -> Edit networks -> [select your network] -> Advanced settings. There you can fill in the SOCKS proxy and port number without a password. In the DNS section you may add for instance the Google DNS 8.8.8.8 & 8.8.4.4 (it wont work without a name server outside of the great firewall).
Once the proxy is in use, the icon should display a hammer and sickle “FixWall” which will shut down the proxy process if pressed. You will also need to turn off the socks proxy setting for your connection to have things in previous order.
Couple tips more. If you only need to use the proxy for YouTube, “cuteTube” has it’s own proxy setting. Also if you want to create your own icons get the template file from here and please share them in the comment box below!
Comments are still more than welcome!
However, support is limited.
Thank you for reading, David.
Hi Elf, thanks for the writeup. Can you please clarify the files you used on the client side? Did you simply just paste the “shadowsocks” folder in the masterbundle.zip into the /opt directory? Thanks
Doesn’t it say “Documents folder”?
Thanks for the writeup. But in the Advanced Settings I can’t change the “socks4://” proxy into “socks5://”. Does N9 really support socks v5 proxy?
As far as I can remember, it does.
Unfortunately I no longer possess a Nokia N9 phone, and this article remains here mostly for legacy and referential purposes. Hope it’s useful though.