Archive for the ‘FreeRunner’ Category
Well it’s been just over 2 years now since I picked up my Neo Freerunner and unfortunately I have nothing good to report back. When I first got my hands on the Freerunner I had great expectations as can be seen in my previous posts however it turns out I was little too optimistic.
My hope was to write about my experience developing applications for the device but it seems as though I was one of the unlucky users who suffered from the infamous buzz. And I don’t mean buzz in a good way :) Apparently this didn’t effect every user and was more prevalent when using certain GSM bands. However random it may have been for some users it was an absolute show stopper for me and rendered the device pretty much unusable as a phone. Anytime I placed a call, the person on the other end heard a horrible loud buzzing sound. After a while Openmoko finally tracked down the source of the buzzing to a hardware problem and published some instructions on how to mod the device (known as the big-C rework). Unfortunately it requires some fairly advanced SMD-soldering skills and is way out of my league. As far as I know, Openmoko never really offered much help in resolving the issue for people who had already purchased the device with the hardware flaw (rev A5/A6) and were unable to preform the necessary surgery.
Despite the lacking phone functionality the Freerunner itself is still pretty cool. I’m sure I’ll be able to think of some other fun projects to use it for especially since it runs Debian.
Here’s some notes on my initial experience setting up the Neo Freerunner. I’ve been meaning to write this post for a while now and most of this is already old stuff but I’m posting it anyhow for reference. I purchased the Neo Freerunner fully aware that it was a developer phone but my hope was that I could at least ssh into the device and make/receive a few phone calls. I’m happy to report that after first booting I was able to get most things functioning within a few hours.
There’s several distributions for the Freerunner which can get quite confusing but the one that comes stock with the Freerunner is referred to as 2007.2. First time booting up the Freerunner you’re presented the home screen for 2007.2. You can also boot into NAND and NOR flash which allows you to update the kernel, root filesystem and the boot loader (U-Boot).
My first mission was to ssh into the device. Followed the instructions on the wiki for setting up USB networking. By default the IP address of the Freerunner is 192.168.0.202. On the desktop side you first have to ifconfig the usb0 interface and setup the correct routes. Here’s the script I run on my desktop after connecting the Freerunner:
#!/bin/bash /sbin/ifconfig usb0 192.168.0.200 netmask 255.255.255.0 /sbin/route add -host 192.168.0.202/32 dev usb0
One extra step I had to do was configure my firewall to allow connections to/from usb0. I’m running Ubuntu hardy 8.04 and using Firestarter. Open up Firestarter:
- Preferences -> Firewall -> Network Settings
- Set ‘Local network connected device’ to: Unknown device (usb0)
- Check ‘Enable internet connection sharing’
Verified usb0 network connections:
$ ping -I usb0 192.168.0.202 $ ssh firstname.lastname@example.org
Once connected to the Freerunner next step was to get the date to display on the home screen. To do this I just followed the instructions on the wiki for customizing the today page (run these commands on the Neo):
# dbus-launch gconftool-2 -t boolean -s /desktop/poky/interface/reduced false # /etc/init.d/xserver-nodm restart
Here’s a screenshot of the home screen:
Once I was able to successfully ssh into the Neo and verifed that I could also connect to the internet from the Neo I wanted to upgrade to the latest software release. To do this you use opgk (package management system based on Ipkg). The first time you upgrade from the software release shipped with the Neo you have to first upgrade dropbear (ssh server) from the terminal on the Neo, then you can ssh back into the Neo and upgrade the rest of the software:
# opkg update On the Neo, open Terminal and run: # opkg install dropbear Then ssh to neo and run: # opkg upgrade
At this point I rebooted and inserted my T-Mobile sim card and microSD card. Once back at the home screen it showed I was registered to the T-Mobile network and I opened up the dialer app and placed my first call!
Set up Timezone and correct date/time
To fix the timezone run this from the Neo:
# opkg install tzdata tzdata-americas # ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime # /etc/init.d/xserver-nodm restart
To set the correct time using ntp run:
# opkg install ntpclient # ntpclient -s -h pool.ntp.org # hwclock --systohc
Next up was connecting the Neo to my wireless LAN. The wireless interface on the Neo is eth0. First have to make sure WLAN device is turned on which it seemed to be by default when you first boot. You can check this by holding down the power button for a few seconds which should pop up a menu showing the state of the various devices. Here’s the script I use to connect the Neo to my WLAN:
#!/bin/sh /sbin/ifconfig eth0 down /sbin/ifconfig eth0 up /sbin/iwconfig eth0 key restricted 'xxxxx' /sbin/iwconfig eth0 essid 'xxxx' /sbin/udhcpc eth0
tangoGPS rocks. This app is amazing and it worked right out of the box. Followed the directions on the wiki to get it up and running. There was an issue getting a fix with the SD card installed but by the time I tried this out they already had a kernel update which fixed the issue. I had no problem getting a fix and my TTFF was 35s with the SD card in. Here’s some screenshots of tangoGPS in action:
I also installed and ran AGPS Test which is a program for testing out GPS on the Neo. It shows some nice graphs of the various satellites you’re currently connected to and their signal strengths:
Overall I was impressed by how much I was able to get working the first time around however there’s definitely a few issues I came across. The most concerning was the GSM buzzing during phone calls. On the Neo side everything sounds fine but the person on the other end hears a very loud buzzing noise. Here’s the latest update from the hardware list regarding the issue. I tried tweaking the various alsa settings in
/usr/share/openmoko/scenarios/gsmhandset.state with some luck but still wasn’t able to find the right balance to completely eliminate the buzzing. Still trying to wrap my head around which alsa settings do what but I found playing with alsamixer during a live call to be helpful. The basic procedure goes something like this:
- ssh to FreeRunner
- Make a phone call
- While call is in progress run alsamixer
- Tweak settings to minimize buzzing/echo
- While call is still in progress run:
$ alsactl store -f gsmhandset-test1.txt
Now you can diff this new file against the original (/usr/share/openmoko/scenarios/gsmhandset.state) and see which settings were changed. This is really the only thing holding me back from using the Neo as my primary phone so I look forward to a possible fix.
I found using the Terminal on the Neo rather clunky due to the lack of characters available on the keyboard. For example there’s no <TAB> or ‘/’. I’m sure there’s ways to customize the keyboard. Looks like only vi is available by default on the Neo so I plan on seeing if I can find a vim package (.ipk) or figuring out how to compile vim for the Neo.
Open. Mobile. Free. That was the tag line printed on the side of the box which housed my shiny new Neo FreeRunner. I finally had some time to sit down and play with this new device and so far it’s blown me away. If you’re a Linux geek and haven’t checked this out yet I highly recommend getting one. It’s a truly open platform with a thriving community and is supported by a company which has basically open sourced their internal development. Where else could you get the complete CAD files for your phone? There’s a good post about why you might think twice before buying an iPhone and picking up a FreeRunner instead.
Here’s a few pics of what the Neo looks like all boxed up..
The Neo came bundled with a USB cable, a nifty stylus + laser pen, AC adapter, battery, and a 512mb microSD card.
The hardware specs for the Neo (GTA02) are impressive, GSM, WiFi, Bluetooth, GPS. All that packed into a full blown Linux distro that fits in the palm of your hand.
I’ll be posting more about my experiences using the Neo as my daily phone. More to come..