N900 with a Slice of Raspberry Pi

N900 as a Remote Display

Now that I have a point-to-point local network between my N900 and Raspberry Pi, I've removed the need to connect a network cable, but I still have that pesky HDMI cable to get rid of. After all, you may want to hack on your Raspberry Pi in places where you don't have an HDMI-enabled display handy. Luckily, with a few tweaks you can use your N900 touchscreen as a display for the Raspberry Pi and still be able to use a keyboard or mouse you have connected to the Raspberry Pi for input.

Unfortunately, I can't just connect the composite out or HDMI out of the Raspberry Pi into the N900, but what I can do is take advantage of the relatively low-latency local USB network and share the N900 X display over VNC. The first step is to install the x11vnc package on the Raspberry Pi with sudo apt-get install x11vnc.

Once x11vnc is installed, I need to set it up so that it automatically launches when X launches. I suppose this isn't absolutely necessary. After all, you could ssh in every time and start it yourself, but I think having it automatically launch is much more convenient. To do this, create a file called /home/pi/.config/autostart/x11vnc.desktop with the following contents:

[Desktop Entry]
Name=X11VNC Server
Comment=Share this desktop by VNC
Exec=x11vnc -forever

Next, I need to change the settings for the x11-common package so that it allows X sessions to be launched by any user. This is necessary so that I can run startx at boot time automatically. Without this change, X will detect it's not being run from a console session, and it will error out. To do this, run sudo dpkg-reconfigure x11-common, and when prompted to select "Users allowed to start the X server", select Anybody.

The final step is to start X at boot time. There are a number of ways to do this, but one of the easiest ways on the Raspberry Pi is via the /boot/boot.rc file. By default, the file is not there, but if present, it allows you to specify commands to run during the boot process so you can do things like enable SSH or start X. The following /boot/boot.rc file does both:

# sourced from rc.local on Raspberry Pi
# Name this file as "boot.rc" and put it on the boot 
# partition if you want to run it.

# echo "Checking ssh and enabling if absent"
if ! ls /etc/rc5.d | grep "^S..ssh\$" >/dev/null; then
    insserv ssh
    service ssh start
su pi -c startx

Once you boot the Raspberry Pi and set up the local USB network, if you ssh in and run ps -ef, you should see that x11vnc is running. Now you can launch a VNC client from the N900 (I prefer Presence VNC) and connect to, and you should see a copy of your Raspberry Pi X session (Figure 2). If you had the HDMI cable connected when the Raspberry Pi booted, the X session should be at full 1080p resolution, which might show up a bit small on the N900 screen. However, if you boot without HDMI connected (which is the general use case for this hack), the X session will be configured for composite output and be at a more manageable 640x480. At this resolution, once you tell Presence VNC to go full screen, it uses up the full N900 display, and because you are sharing a real X session on the Raspberry Pi, you can use any keyboard or mouse you have plugged in to it. Sure, it's not as nice as a giant 1080p display, but then it's hard to fit one of those in your pocket.

Figure 2. Presence VNC on N900 Connected to the Raspberry Pi

Although I've talked about the N900 a lot for this hack, the same principles should work to turn just about any device that can run a VNC client into a display for the Raspberry Pi, provided the two devices can connect over the network. In fact, if you are one of the many people who carry a color tablet around anyway, that would be a quite ideal display for the Raspberry Pi.


Kyle Rankin is VP of engineering operations at Final, Inc., the author of many books including Linux Hardening in Hostile Networks, DevOps Troubleshooting and The Official Ubuntu Server Book, and a columnist for Linux Journal. Follow him @kylerankin


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

M-am apucat de afaceri cu

N900's picture

M-am apucat de afaceri cu pamantul :vand pepeni! Acesta va vi ocupatia mea pe anul acesta. Pepeni verzi sau galbeni de cea mai buna calitate.

yes...it would be interesting

Dzak's picture

yes...it would be interesting if that was on android mobiles too... hope see some extra info about that, if there is ofcourse.


79F's picture

So can this be done with Android devices as well?

If so, please explain (at least in general terms) the manner/programs/processes that allow such connectivity?

Thank you..

You're faaaaaaar behind the

Anonymous's picture

You're faaaaaaar behind the first 10000 if you got your first pi a week ago. :P Raspberry pi have been around a year or so.

N900 still rocks

pavithran's picture

My GSM chip in N900 is dead ,But the idea of using N900 as display is awesome . Even the tethering is a good idea. Both Raspberrypie and N900 are hacker devices, nice to see them coming together . :)

N900 for fun and profit

Levelhead's picture

Great article Mr. Rankin.

I've found the N900 to be really useful when traveling. It has a multitude of useful capablities any geek would appreciate. Even though it's quite old now as cell phones go I use it's Internet connectivity via 3G Internet tethering (USB of course, until WPA is available not gonna do it) Use it as a movie player via composite out. (although had to convert many of my favorite movies originally ripped/contained beyond it's codec/resolution capabilities using ffmpeg) (BTW I've not found a way to play mp4/mkv files on it, if you have any tips, much appreciated)

It is, of course, a fine GSM phone and can use it on any GSM network I've ever encountered as it's transciever works on all of the bands domestic and International.

Any more N900 articles will be read with enthusiasim! Many thanks, Levelhead.


RCD's picture

You state the $35 Pi having 256MB RAM, but the $35 "Model B" has 512MB. The rest of the article is quite interesting and once away from the work desk I will have to dig in a bit deeper! Thanks.

The first few months of sales

sxa's picture

The first few months of sales had a 256Mb model B, then in October they started shipping the (current) 512Mb version.
Reference: http://www.raspberrypi.org/archives/2180