Jumping Great Firewall of China With Nokia N9 & Shadowsocks

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.

Nokia N9 GFW

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:

breakwall fixwall

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.

4 thoughts on “Jumping Great Firewall of China With Nokia N9 & Shadowsocks”

  1. 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

    Reply
    • 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.

      Reply

Leave a Comment