PyMaemo/Quick start guide

= Running Python code on N900 (quick start guide) =

This article will describe the necessary steps to get your Python application running on N900. For the instructions to work, you need to have Internet connectivity on your device (e.g. WLAN or GPRS).

Installing OpenSSH
OpenSSH is needed to run commands remotely on your N900. This will make testing on the device a lot easier.

If you are able to the Internet from your N900 (e.g. using WLAN or GPRS) follow these instructions:


 * 1) Enable extras repository. See https://wiki.maemo.org/Extras#Using_Extras for how to do it.
 * 2) Install the package named "OpenSSH Client and Server". The client is also needed so we can enable USB networking in the next session, by ssh'ing to root@localhost. Optionally, you can install the rootsh package to enable local root access. See http://wiki.maemo.org/Root_access for details.
 * 3) The installation will ask for a new root password. Choose a good one.
 * 4) Wait for installation to complete.

Enabling USB networking
USB networking allows fast remote access to the device. To enable it, follow these steps (you need to repeat them every time you reboot the device:


 * 1) If the USB cable is plugged and in "Mass storage mode", unpplug the cable and plug it again, now selecting "PC Suite Mode".
 * 2) On N900, open "X Terminal" and run:

ssh root@localhost ifup usb0

This command will ask for SSH fingerprint confirmation (because it is the first connection), and after typing the root password, USB networking will be enabled.


 * 1) Now configure the host. This is dependent on which OS (or Linux distro) you use, see http://wiki.maemo.org/USB_networking#Host_USB_Network_Configuration for detailed instructions for vaious OSes and Linux distros.

From now on you can connect to the N900 from your PC by using:

ssh root@192.168.2.15

Preparing the N900 for Python Development
To enable the full power for Python development for Maemo, you must enable the "extras-devel" repository on your device. Note that this might be a risky operation because extras-devel contains many untested and possibly broken packages. But it also contains the latest versions of all available Python bindings for Maemo, which we are interested on.

To enable extras-devel add a new catalogue to the Application Manager, as instructed in https://wiki.maemo.org/Extras-devel (did you see the big warning on that page?)

Next, you need to install the packages you use (or plan to) on your application by running (through SSH):

apt-get update && apt-get install

Where are the list of packages you are going to use. For instance, for a general GUI application, you will probably need at least "python-gtk2" and "python-hildon". See http://wiki.maemo.org/PyMaemo/Components for the current list of available packages.

Running the Python application on the device (finally!)
Now that you have the N900 properly setup, you just need to copy the Python code to the device and run it.

Single file applications
If your application consists of a single .py file, you can just copy it to the device using:

scp my_script.py root@192.168.2.15:/root

And to run the application on N900:

ssh root@192.168.2.15 run-standalone.sh python2.5 /root/my_script.py

The application should then open on the device's screen, and any errors will be print on the terminal where you run the command below.

Alternatively, you can use this single command to run the code "on the fly" (i.e. without copying anything to the device):

cat my_script.py | ssh root@192.168.2.15 run-standalone.sh python2.5

Multiple file applications --

For applications which contain more than one file (e.g. images, or other Python files), you need to make all the necessary files accessible on the device. The simplest way is to copy all the code to some directory on the device, which you could do by using this single line:

tar -cf- my_application_dir/ | ssh root@192.168.2.15 tar -C /root -xvf-

This command uses a combination of tar and ssh to copy all files under a directory recursively (taking care to keep permissions intact). Then, to run the application, use a command like this:

ssh root@192.168.2.15 run-standalone.sh python2.5 /root/my_application_dir/my_script.py

Alternatively, you can install the "sshfs" package on your PC (it is available at least on Debian and Ubuntu systems), and run:

sshfs root@192.168.2.15:/root some_local_dir

This will make the N900's /root directory accessible on some_local_dir directory on the PC. You can copy files to some_local_dir and they will be transparently copied to the device. To run the application, use the same command as shown earlier.

Once you don't need to access the directory anymore, run: umount some_local_dir

sshfs can also be used the other way around: you can access your application's directory directly from the N900 (so no copying is needed at all). For that, install the "sshfs" package on N900 by running:

apt-get install sshfs

Make sure you have OpenSSH server installed on your PC, and run:

ssh root@192.168.2.15 # this will log into the N900 mkdir /root/host_fs sshfs @192.168.2.14:/path/to/my_application_dir /root/host_fs run-standalone.sh python2.5 /root/host_fs/my_script.py

Once you don't need to access the directory anymore, run: ssh root@192.168.2.15 umount /root/host_fs