Qtopia on Neo1973
Qtopia is a complete mobile phone and PDA platform which can be built for many devices and is dual-licensed under the GPL and a proprietary license, but since version 3.4.0, everything needed to use Qtopia on the Neo1973 is licensed under the GPL.
On 27 November 2007, Lorn Potter of Trolltech released the latest flash image for the FIC Neo 1973 containing the Qtopia 4.3.1 snapshot of that day (GPL version). This introduces the new Cruxus mediaengine, which has a few plugins already, which include libmad, tremor (ogg) and timidity, for .wav, .mp3, ogg and .mid file support.
For installing it, follow the instructions on flashing Qtopia images below.
Bug: The dialer might not ask for a PIN (even if your SIM card needs it) on first boot after flashing to Qtopia.
Workaround: Somehow, completely powering down the Neo seems to cure this issue. You do can do it in two ways:
- Remove the USB cable and the Battery for a moment to remove all power from the Neo, or
- Remove the USB cable, press the power button for a second, select "Shutdown device" (Note: "Restart Device" does not help - you need to power it down completely!)
If your SIM card does not require a PIN, you can skip the above possibly, but otherwise you won't be able to use GSM networks at all!
After this power-cycle of the Neo, the Qtopia dialer should ask for the PIN if it's needed, and you should be able to make and receive calls, each side should hear each other and you should be able to send and receive SMS, and use Contacts for Calls and SMS!!!.
The Call, SMS and contact interface is quite intuitive and should be usable by non-expert users from that point on. Also the rest of Qtopia looks very polished.
For the latest information on this snapshot read the thread following its announcement.
The area of battery time and/or suspend still needs improvement. By default, Suspend is disabled in Qtopia because at the moment, you are not able to receive a phone call or an SMS when the Neo is suspended. At the moment (with suspend not enabled, which is the default), Qtopia lasts about 3-5 hours, depending on the amount of use.
The current maximum standby time seems to be around 7 hours - if there is no use of the phone and the phone is not getting any touches and just sitting on the desk with Bluetooth disabled and getting no touches so that the display is off, just being ready to receive calls and SMS.
Note that if the Neo runs out of battery, simply connecting USB is not sufficient at that point, the battery has too little voltage to allow the Neo to turn on and enable 500mA charging current. At this point, the Neo is just dead as a brick and charges very slowly with 100mA charging current for about 4 to 6 hours until the battery is recharged enough to allow turning on the Neo and charge with 500mA charging current.
Current status regarding suspend: Suspending and resuming works, when you remove console=ttySAC0,115200 from bootargs_base (see this howto), it even wakes up with the GSM part working, but it does not make Qtopia wake up on incoming calls or SMS, so you are not getting notified if you turn on suspend. After pressing the AUX button, the Neo should wake up from suspend though and should inform you of missed calls and received SMS.
This bug seems to be half-workedarounded, but the fix is not included in the most recent (as of 2007-12-16) official Qtopia image yet. There is an unofficial image from Lorn at http://llornkcor.com/neo/qtopia-4.3-snapshot-12192309-neo-flash.tgz that you can try out that includes his fix.
Flashing Qtopia images
These are instructions for flashing the latest release of Qtopia (27112007). This seems to be the best working image yet, eg. voice _and_ SMS seems to work.
The link to the archive file, Qtopia flash image for FIC Neo 1973, is mentioned below
Get that and save it on your computer. It should be: "qtopia-4.3.1-snapshot-1127.tgz"
Unpack it with:
tar zxvf qtopia-4.3.1-snapshot-1127.tgz
This should make you have the following two files, ie. a kernel file and a rootfs file:
-rw-r--r-- 1 plr 1000 31956148 2007-11-27 06:55 qtopia-rootfs.2-11270550.jffs2
-rw-r--r-- 1 plr 1000 1538620 2007-11-10 20:57 uImage-22.214.171.124-moko11+svnr3238-r7-neo1973.bin
In case you already do not have a dfu-util utility, you will need to download it. The following version has been tried out and seemed to work.
Before moving forward please make sure of the following
1. You have the necessary permissions in your system (i.e. root access)
2. dfu-util is executable
3. Your Neo is in uboot mode
4. And a USB cable is connected between your computer and the Neo
5. Realize that the following is low-level stuff and doing something wrong may brick your Neo
execute the following from a command line:
cu -l /dev/ttyACM0
Which should get you the following:
Connected. In: usbtty Out: usbtty Err: usbtty GTA01Bv4 # DEVICE_CONFIGURED: 1 Enabling automatic fast charge
Press <Enter> and you should get:
|WARNING: Before flashing the rootfs image, be sure to erase the rootfs using nand erase. Otherwise, the Neo may hang somewhere after on boot. Before you hit enter on one of the following commands, make sure that you are *not* issuing a plain "nand erase" command - always make sure you tell it which partition to erase. If you forget this you'll brick the Neo and you'll need a debug board to recover it.|
At that prompt type:
nand erase rootfs
and the <Enter> key, which should get you:
NAND erase: device 0 offset 0x2e4000, size 0x3d1c000 OK GTA01Bv4 #
At that prompt don't press anything else, but:
and the <Enter> key, which should disconnect you from the bootloader.
Now, from the computer prompt, execute the following:
./dfu-util -a kernel -R -D uImage-126.96.36.199-moko11+svnr3238-r7-neo1973.bin
which should get you the following, and it should only take a few seconds to finish:
dfu-util - (C) 2007 by Openmoko Inc. This program is Free Software and has ABSOLUTELY NO WARRANTY
Opening USB Device 0x0000:0x0000... Claiming USB DFU Runtime Interface... Determining device status: state = appIDLE, status = 0 Device really in Runtime Mode, send DFU detach request... Resetting USB... Opening USB Device... Found Runtime: [0x1457:0x5119] devnum=3, cfg=0, intf=0, alt=3, name="kernel" Claiming USB DFU Interface... Setting Alternate Setting ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing Transfer Size = 0x1000 bytes_per_hash=30772 Starting download: [##################################################] finished! state(2) = dfuIDLE, status(0) = No error condition is present Done! Resetting USB to switch back to runtime mode
After that, execute the following:
./dfu-util -a rootfs -R -D qtopia-rootfs.2-11270550.jffs2
which should get you the following, and it should take between 5-10min to finish:
dfu-util - (C) 2007 by Openmoko Inc. This program is Free Software and has ABSOLUTELY NO WARRANTY
Opening USB Device 0x0000:0x0000... Claiming USB DFU Runtime Interface... Determining device status: state = appIDLE, status = 0 Device really in Runtime Mode, send DFU detach request... Resetting USB... Opening USB Device... Found Runtime: [0x1457:0x5119] devnum=5, cfg=0, intf=0, alt=5, name="rootfs" Claiming USB DFU Interface... Setting Alternate Setting ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing Transfer Size = 0x1000 bytes_per_hash=639122 Starting download: [##################################################] finished! state(2) = dfuIDLE, status(0) = No error condition is present Done! Resetting USB to switch back to runtime mode
In both cases, some text on your Neo should appear, indicating that the kernel or the rootfs are being downloaded.
After this, the Neo should be able to boot, and depending on how you have your boot menu set up, choose "Boot" or perhaps "Boot from NAND". The method described above in any case puts the software on the NAND flash, and not on an SD card, if you have that installed.
The latest official Qtopia flash images are found at: http://www.qtopia.net/modules/mydownloads/ (Scroll down on this page to find them)
Unofficial Qtopia images can be found in the ScaredyCat and Chooseopen repositories.
For more details on the the process of flashing the Neo, see Flashing the Neo 1973.
Dual-booting between Qtopia and X
Both examples described here require you to reformat your MicroSD card to ext3, so this is the first step for both:
|WARNING: The following step will reformat your MicroSD card with the ext3 filesystem. We need it because we need support for symbolic or/and static links, which other filesystems like FAT do not support directly. After reformatting, no data on the card will be accessible to you anymore, so create good backups of anything which you need before starting!|
Then ssh to your neo and reformat your MicroSD card with: umount /dev/mmcblk0p1 mkfs.ext3 /dev/mmcblk0p1 mount /dev/mmcblk0p1
Installing Qtopia into an openmoko rootfs
On , click "Developer root filesystem". Then extract opt/Qtopia and the qpe init script and copy both to the mmc card of your neo:
tar xzf ficgta01-qtopia-developer-rootfs.tgz opt/Qtopia etc/init.d/qpe mv opt/Qtopia etc/init.d/qpe . && rm -r opt etc tar czf Qtopia.tar.gz Qtopia qpe scp Qtopia.tar.gz firstname.lastname@example.org:/media/card/
Log in to your Neo and unpack the archive and install it:
cd /media/card tar xzf Qtopia.tar.gz mkdir -p /opt ln -s /media/card/Qtopia /opt/Qtopia mv qpe /etc/init.d
Now kill the X server and gsmd and start Qtopia (this can take some time):
/etc/init.d/xserver-nodm stop /etc/init.d/gsmd stop /etc/init.d/qpe start
Now, in theory, it should be possible to could create a new entry in the uboot boot menu which adds a new boot argument to the kernel, say "qtopia=1" and you could could write a script which checks that boot parameter by checking if "$qtopia" is set to "1" or by checking /proc/cmdline and then boot Qtopia instead of X.
Installing Qtopia on the SD card
- format your SD card with ext3 and mount it (see above)
- unpack rootfs from qtopia-4.3.0-preview-neo-flash.tgz to SD card (see above)
- copy the uImage-188.8.131.52-moko11-r2-fic-gta01.bin kernel to the boot/ on SD card and rename it to uImage
- put a 'Boot from SD' menu item in uboot menu as explained here: Booting_from_SD#Step_3:_Add_uboot_boot_entry
Build Qtopia from source
The source code for qtopia is available from ftp.Trolltech.com/Qtopia
See http://blog.wolfman.com/articles/2008/08/27/porting-xgps-to-qtopia-for-the-freerunner for some instructions on building.
Most things seem to work out of the box, however you might need to use the following command to get audio (but not with the official flash image available from Trolltech): alsactl -f /etc/gsmhandset.state restore Or put this command in /etc/init.d/qpe line 64
Do not switch themes. Only the default theme is usable. For example, once you switch themes, the lock feature continues to work, but only if you unlock using the smallest # keypad in the world.
Suspend support is very flaky. The neo often shuts off from a suspend state. It will not wake from suspend for an incoming call or text message (someone try setting an alarm and report results here). To turn suspend off (this will of course use the batteries very quickly), hit the down arrow next to the suspend setting in the power management until it says "Off".
When using the "Predictive keyboard," do a quick flick up or down over the keyboard to access numbers/symbols/capitals. In snapshot builds, you can select virtual keyboard by tapping on the little arrow icon to the left of the battery status icon.
In summary, Qtopia on the Neo1973 is much closer to being ready than Openmoko as of this writing. However, sound and suspend support prevent it from being at all useful as a cell phone (as a landline that doesn't ring but instead vibrates, it works ok).
The Qtopia forum area on the FIC GTA01 might be helpful, but it is preferred that you update this section with issues and fixes you find.
For full size videos, 346 MiB:
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català