Nokia 770

From LinuxMCE
Jump to: navigation, search
Version Status Date Updated Updated By
710 Unknown N/A N/A
810 Unknown N/A N/A
1004 Unknown N/A N/A
1204 Unknown N/A N/A
1404 Unknown N/A N/A
Usage Information
Nokia770.jpg

Official Site

About the device

Microprocessor: 220-MHz, ARM9-based Texas Instruments (TI) OMAP 1710
RAM: 64MB DDR
On-board memory: 128 MB, more than 64 MB available to the user
Memory slot: RS-MMC (Reduced size MultiMedia Card)
Battery: Standard Li-ion BP-5L Battery 1500 mAh (3 hours browse, 7 hours standby)
Screen: 800×480 touch screen with up to 65,536 colors
WiFi: 802.11 b/g
Bluetooth: Bluetooth 1.2 - dial-up networking, file transfer, generic access, SIM access, and serial port profiles
Audio: Audio out
PC connectivity: USB (slave mode only) via DKE-2 cable
OS: Internet Tablet 2005 (Maemo-based)
Linux specs: 2.6 kernel, GNOME-based GUI
Dimensions: Dimensions: 5.5 inches x 3.1 inches x 0.70 inch
Weight: 8.1 ounces
Price: $140

The Nokia 770 works pretty well as a LinuxMCE Orbiter.

The Orbiter package and all dependences can be found in the Maemo garage, for information on how to use it read "Using Nokia770/N800 as a Plutohome Orbiter" on the SmartBlog.

See also Tune_Nokia770 Tune Nokia770 to use it as LinuxMCE Orbiter

Preparing the Tablet

Before you begin

First of all this is work in progress so don't expect the orbiter to be fully functional at full speed on this tablet. There are some known bugs so far:

  • It is suggested to run it using OS2006 on a 770.
  • For font support you need to have TrueType fonts in the /usr/share/fonts/truetype/msttcorefonts/. The easiest way to get them is a copy from your core (they are placed in the same directory).
  • Crashing and working a little slow

Thanks to Michael "Nite man" Stepanov from IPTRIPLEPLAY Ltd [info@iptp.net] who ported Orbiter on maemo platform.

There is another manual that describes this process here

Installing OS 2006 on Nokia 770

To check you current firmware version you can go to : MainMenu -> Control Panel -> Device -> About Product. There it should say 'Version: 3.2006-49-2" or greater. If you already have this version installed then you can skip to next paragraph, else follow up this steps to get it installed.

The next steps are copy pasted from [the maemo wiki] and adapted to meet your needs :

Beware that flashing a new image on the Nokia 770 will remove all user changes to the system, including preferences, bookmarks, news feeds, user installed applications... Everything not on the memory card will be gone and the device will behave as if just purchased with the single exception that any previously-set lock code will be kept and not reset to the factory-default of "12345" (even the code is not preserved on some images).

  1. PC: Download the Linux flasher at [maemo.org]. flasher3 seems to work best.
  2. PC: In the same directory download the image you want: [Nokia_770_3.2006's latest version]
  3. 770: Unplug charger and switch off the Nokia 770. Connect it to your computer via USB.
  4. PC: Execute as root (or as a normal user with rights to use the USB port):
    ./flasher-3.0 -F the_image.bin -f -R
  5. PC: "Suitable USB device not found, waiting" is displayed on the console.
  6. 770: Now plug in the charger to switch on the 770 or switch it on using the power button WHILE holding the Home-button.
  7. PC: Watch the messages as the image loads to the 770 after which it reboots automatically -- you're done now!

Tune Nokia770 to use it as LinuxMCE Orbiter

Many users of Nokia770 claim that the device work unstable as LinuxMCE Orbiter. The Orbiter crashes very often, especially on Video screen. So, I decided to make a brief research to make device more stable. Here area few suggestions.

  1. Apply WLAN memory corruption bugfix.
    > dmesg | grep CX3110x
    Unloaded CX3110x driver, version 0.8
    CX3110x chip variant: STLC4370
    CX3110x: firmware version: 2.13.0.0.a.13.14
    Loaded CX3110x driver, version 0.8.1-bug2006-fix1
    If your output diesn't show the "bug" fix like that, it needs to be patched. It's well-known bug from a long time ago but it was fixed just in the latest OS2007HE. There is a package which can also apply the WLAN memory corruption bugfix.
  2. Enable swap.
    In the most of the cases when the Orbiter crashes there is no enough memory for the application. You can increase it by adding swap. Go to Control Panel --> Memory and chose tab 'Virtual'. You find there an information about available memory on the MMC card, box to activate swap and the list of offered sizes. Tick the box, chose appropriate size and press 'Ok'. Swap will be created on the MMC card and system starts to use it. Note: before remove the MMC card you should deactivate swap!.
    In my test the Orbiter works stable with swap 48Mb. It didn't crash on the Video screen at all.
  3. Use seat belt.
    Seat belt is a small script for the Nokia 770 which changes the way memory is allocated to make more use of caches and swap. As a result it prevents crashes of the browser and other programs.
  4. Using access point with support WLAN Power Save Mode.

Nokia770 uses Power Save Mode to save energy. If the access point doesn't support that mode properly the device can loose its physical connection. Connection Manager may show high quality signal but the device is not accessible from the LAN.

(merged in from "[Tune Nokia770 to use it as LinuxMCE Orbiter]" originated by User:Nite_man 09:39, 21 December 2007)


Configuring/Installing SW

Configuring the Core

  1. Open up a web admin interface, go to Orbiter page and add a new device of type 'Orbiter'
  2. Locate the newly added device and change the resolution to 640x480 as the Nokia 770 won't support the default of 800x600
  3. Memorize the numeric id that LinuxMCE assigns to your new orbiter since you'll need it later, you can see it right of the 'Description' filed on the same page.
  4. Do a full regen of that orbiter and a quick reload router after that


Configuring the Tablet

  1. Setup you wireless connection. To use your tablet as an orbiter you'll need to make sure that the tablet is located within the internal network of the core.
  2. Upload the deb package to you tablet using the usb cable or by downloading it directly from our website. You can fetch the deb file [here]. You'll also need to install all the listed dependencies. If you run into errors about libxmu6, you can add "http://repository.maemo.org/ bora free non-free extras" and "http://repository.maemo.org/extras bora free non-free" to your application catalog.
  3. Install it by double clicking the deb file from Nokia 770's File Manager.

Starting the Orbiter

If you installed the orbiter using the .deb, you should be able to launch it from the Extras menu entry.

Getting Help

For getting help and troubleshooting possible problems related to nokia 770 and LinuxMCE you can always talk to other users the [forum] and don't forget that this is still WiP.

Building an Orbiter

These are the instructions to build a version of Orbiter for the Nokia 770 internet platform. Nokia 770 has an ARM family processor, therefore you will need to cross-compile if your build machine is an Intel.

Nokia-orbiter-small-400.jpg

Requirements

You will need:

sudo echo "deb http://scratchbox.org/debian ./">>/etc/apt/sources.list
sudo apt-get update
sudo apt-get install scratchbox-core scratchbox-devkit-debian scratchbox-doctools \
     scratchbox-libs scratchbox-toolchain-arm-glibc scratchbox-toolchain-i686-glibc
  • Otherwise download the files and install them using dpkg
sudo dpkg -i \
 scratchbox-core_0.9.8.*.deb \
 scratchbox-devkit-debian_0.9.8.*.deb \
 scratchbox-doctools_0.9.8.*.deb \
 scratchbox-libs_0.9.8.*.deb \
 scratchbox-toolchain-arm-glibc_0.9.8.*.deb \
 scratchbox-toolchain-i686-glibc_0.9.8.*.deb

Preparing the Nokia tablet

  1. Make sure it is connected to the network - check the Connection manager for a WiFi connection
  2. Open an X terminal on the tablet; make a directory in your home dir to hold the Orbiter binaries, say /home/user/orbiter
  3. You'll need a way to transfer files from the build machine to the tablet. Either have an HTTP server somewhere on your network, or install OpenSSH on the tablet. If you install OpenSSH, remember to also start it, by doing /etc/init.d/ssh start. To get a root prompt, use sudo gainroot.

Preparing the build machine

  1. Install Scratchbox debs on the build machine
  2. Add yourself as a Scratchbox user: /scratchbox/sbin/sbox_adduser username
  3. Check out a fresh working copy of LinuxMCE from http://svn.plutohome.com/pluto/trunk/src/ into /scratchbox/users/username/pluto/trunk/src (username is assumed to be your user name on the build machine)
  4. Copy or symlink the Maemo SDK into /scratchbox/packages
  5. Log in to Scratchbox by typing scratchbox
  6. Configure Scratchbox cross-compile target:
     > '''sbox-config -ct Nokia770'''
    Available compilers:
    0) arm-linux-gcc-3.3_3.3.4-glibc-2.3.2.ds1
    1) host-gcc
    2) i686-linux-gcc-3.3_3.3.4-glibc-2.3.2.ds1
    Enter compiler number: '''0'''
    Available CPU-transparency methods:
    sbrsh
    qemu-arm
    qemu-ppc
    Enter method name (qemu-arm): '''qemu-arm'''
    Available devkits:
    debian
    Enter list of devkit names (none): '''debian'''
  7. Select the new cross-compile target: sbox-config -st Nokia770
  8. Unpack the Maemo rootstrap: sbox-config -er /scratchbox/packages/Maemo_Dev_Platform_RS_v1.1_arm.tgz
  9. sbox-config -cc
  10. sbox-config -cf
  11. Update the package list inside Scratchbox by typing apt-get update
  12. Install the following build-time dependencies (with apt-get install)
    • libmysqlclient12-dev
    • libid3-dev
    • xlibmesa-gl-dev
  13. Before starting to compile Orbiter and its dependencies, type: export SNR_CPPFLAGS="-DMAEMO_NOKIA770" (add there -DDEBUG if you want to see all debug messages) and export SNR_LDFLAGS="". Also, apply that patch to Orbiter Makefile to remove GL and HID dependences:
--- src-2.0.0.44/src/Orbiter/Makefile   2007-03-05 13:44:44.000000000 -0800
+++ tmp/Makefile        2007-06-07 08:02:09.000000000 -0700
@@ -23,9 +23,9 @@


 CXXFLAGS += -g -O0
-CPPFLAGS += -I/usr/include/SDL -DORBITER -DCACHE_IMAGES -DENABLE_MOUSE_BEHAVIOR -I$(ROOT)/Splitter -I$(ROOT)/OrbiterGen -I$(ROOT)/SDL_Helpers -DHID_REMOTE
+CPPFLAGS += -I/usr/include/SDL -DORBITER -DCACHE_IMAGES -DENABLE_MOUSE_BEHAVIOR -I$(ROOT)/Splitter -I$(ROOT)/OrbiterGen -I$(ROOT)/SDL_Helpers
 LDFLAGS += -L/usr/X11R6/lib
-XTRALDLIBS += -lDCECommon -lSDL -lSDL_ttf -lSDL_image -lSGE -lSDL_gfx -lXtst -lXext -lGL -lXrender -lGLU -lSDL_Helpers -lhid
+XTRALDLIBS += -lDCECommon -lSDL -lSDL_ttf -lSDL_image -lSGE -lSDL_gfx -lXtst -lXext -lXrender -lSDL_Helpers -lhid
 # wmctrl wrapper
 CPPFLAGS += -I/usr/X11R6/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
@@ -38,7 +38,6 @@
        ../utilities/linux/wrapper/wrapper_x11.cpp \
        ../utilities/linux/wrapper/image_file.cpp \
        Linux/win_list_manager.cpp \
-       Linux/HIDInterface.cpp \
        Linux/OrbiterRenderer_Linux.cpp \
         Linux/WindowContext.cpp \
        DesignObj_Data.cpp \

Note: I had to remove the link to hid as well, i.e. my line looks like this

-XTRALDLIBS += -lDCECommon -lSDL -lSDL_ttf -lSDL_image -lSGE -lSDL_gfx -lXtst -lXext -lGL -lXrender -lGLU -lSDL_Helpers -lhid
+XTRALDLIBS += -lDCECommon -lSDL -lSDL_ttf -lSDL_image -lSGE -lSDL_gfx -lXtst -lXext -lXrender -lSDL_Helpers

Building Orbiter

While inside Scratchbox, before building, export variable SNR_CPPFLAGS, and modify some build files:

export SNR_CPPFLAGS="-DDEBUG"
find . -iname Makefile -exec sed -e 's/<-mkr_t_compile_defines->/-DKDE_LMCE -DDEBUG -DTHREAD_LOG -DLOG_ALL_QUERIES -I\/opt\/libxine1-pluto\/include -I\/opt\/libsdl1.2-1.2.7+1.2.8cvs20041007\/include -I\/opt\/libsdl1.2-1.2.7+1.2.8cvs20041007\/include\/SD/' -i '{}' \;
find . -iname Makefile -exec sed -e 's/<-mkr_t_compile_libs->/-L\/opt\/libxine1-pluto\/lib -L\/opt\/libsdl1.2-1.2.7+1.2.8cvs20041007\/lib/' -i '{}' \;


Pre-request packages

apt-get install the following packages:

  • libsdl-ttf2.0-dev
  • libsdl-image1.2-dev
  • libsdl-gfx1.2-dev
  • libsdl1.2-dev
  • libgle3-dev
  • libsdl-sge-dev
  • libxmu-dev
  • libhid-dev
  • libmysqlclient12-dev
  • libhttpfetcher-dev

I had problems finding libgle3-dev, libhid-dev.

Compiling the LinuxMCE libs

  1. Go into /pluto/trunk/src/SerializeClass and type make
  2. Go into /pluto/trunk/src/PlutoUtils and type make
  3. Go into /pluto/trunk/src/DCE and type make
  4. Go into /pluto/trunk/src/SDL_Helpers and type make
  5. Go into /pluto/trunk/src/Orbiter and type make bin
  6. After a while, the following files will result in /pluto/trunk/src
    • lib/libDCECommon.so
    • lib/libSerializeClass.so
    • lib/libPlutoUtils.so
    • lib/libSDL_Helpers.so
    • bin/Orbiter
  7. Copy these files over to the tablet, in /home/user/orbiter
  8. Don't forget strip Orbiter binaries to save space:
    • strip lib/*
    • strip bin/*

Note: Upon checkout of the 710 branch, I had to comment lines 2875-2881.

Running Orbiter

Before starting Orbiter following applications and libraries should be installed:

  • mysql-common
  • libmysqlclient
  • libhttpfetcher
  • libhid (should be removed soon)
  • libsdl-sge
  • libsdl-gfx
  • libsdl
  • libgle
  • libxmu
  • libsdl-ttf
  • libsdl-image
  • libsm
  • libice
  • libxt
  • xterm
  • ssh

To do that just add additional repository repository.maemo.org and activate Red Pill Mode. Additionally, you should became a root on your device.


In an X terminal On the tablet itself (NOT via ssh) do this:

cd /home/user/orbiter
export LD_LIBRARY_PATH=.
./Orbiter -r xxx.xxx.xxx.xxx -d yy -l orbiter.log

where xxx.xxx.xxx.xxx is the IP address of the DCE Router, and yy is the device number assigned to your new Orbiter.

If it complains about missing .so files, copy them over from your Scratchbox on the build machine into /home/user/orbiter on the tablet.

Notice: you need true type fonts on your Nokia770. The orbiter searches them here - /usr/share/truetype/msttcorefonts. Just copy this directory from your core to Nokia770 (the Debian package for Nokia is coming soon).

Building Debian packages

  1. Dependencies can be found here
  2. The latest Orbiter binaries get here
  3. Orbiter package - here

External references