OpenMoko's Neo FreeRunner: Open to the Core
Okay, I'll admit it. I have a love-hate relationship with the Neo FreeRunner. But please, let me explain.
For more than a month now, I have carried the FreeRunner around with me. It is just such a cool little gadget, and I love what it represents: a completely open mobile device, the hardware and all. For those who are not familiar with it, the Neo FreeRunner is the highly anticipated mobile phone from the folks at OpenMoko. Although its previous phone, the Neo 1973, was targeted at hard-core developers, the FreeRunner “is a Linux-based touchscreen smartphone ultimately aimed at general consumer use as well as Linux desktop users and software developers”.
Even though the goal is eventually to have a general-purpose, consumer-friendly phone, the FreeRunner is not quite ready for the prime-time phone market just yet. The OpenMoko team is fully aware of this, and became slightly uneasy when they learned that Linux Journal wanted to write a review. As such, the aim of this article is not to talk much about the FreeRunner as a phone, but rather as a handheld Linux device for developers.
A Linux geek couldn't ask for a better-equipped device than the FreeRunner. It comes with a 400MHz ARM processor, 256MB internal Flash storage, 128MB RAM and a microSD card slot for extra storage. The wireless capabilities of the FreeRunner also are impressive. It comes with tri-band GSM (with the option of either 850MHz or 900MHz on the low end), as well as GPRS, Bluetooth and Wi-Fi (using the Atheros AR6K chipset). To make things even more fun, the OpenMoko crew included two accelerometers and an assisted GPS chip. The device is a little bulky though, as it measures in at 120.7x62x18.5 millimeters and weighs around 180 grams. The FreeRunner is available on-line from openmoko.com for $399. If you plan to use it for serious development, you also may consider purchasing the $99 debug board that can be used to access the serial console.
One of the more exciting features is the FreeRunner's ability to boot from microSD cards. This means you can test other Linux distributions by installing them on microSD cards without formatting the main distribution that is installed in Flash. This flexibility is very exciting, and it offers an easy way to try before you buy.
The hardware definitely is appealing, but the most attractive thing about the FreeRunner is that it was built to run Linux. Although the official distribution of the FreeRunner is OM 2008.8, other options are available. Trolltech, the creators of Qt, produce the Qtopia distribution that runs very well on the FreeRunner. And, if you prefer a less-watered-down distribution, you'll be glad to learn that Debian also is available, in almost its entirety. Recently, an effort to port Gentoo to the FreeRunner has been started, and I'm sure other distributions will follow suit soon.
As I've said, I don't plan to spend much time talking about the FreeRunner as a phone. However, any review of a device that is sold as a phone wouldn't be complete without at least covering the basics. Unfortunately, the basics are about all there is to go on. The call quality is rather poor, and recipients of calls reported lots of static and popping on their end. Also, the interface is quite awkward, especially for advanced features, such as call waiting. There is no clear way to adjust the volume, because there is no hardware volume control button. Text messaging is incredibly tedious, due to the impossibly small on-screen keyboard.
There is a lot of room for improvement with the phone software. Much work needs to go into improving call quality before I would consider using the FreeRunner as a primary phone.
Because I decided not to use the FreeRunner as a phone, I thought it might be more interesting to install a full-featured Linux distribution. I chose Debian, as it is easily available, has a wide selection of packages and is the distribution with which I have the most experience.
The easiest way to install Debian is to run the install.sh shell script that is available from the DebianOnFreeRunner wiki page. You need to have an already-working installation of Linux installed on your FreeRunner, and it needs access to the Internet. You can use your desktop Linux PC or an installation of Linux in a virtual machine, such as VMware Fusion on Mac OS X.
It is quite easy to route traffic from a FreeRunner through a Linux PC. Each of the available distributions use the same default networking configuration and give the FreeRunner an IP of 192.168.0.202. Plug the USB cable in to the FreeRunner and your PC, and run the following commands:
# iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 # sysctl -w net.ipv4.ip_forward=1 # ifconfig usb0 192.168.0.200
If your network is already using 192.168.0.0/24, you may need to use a different subnet mask. Once the USB network link is up, you should be able to SSH into the FreeRunner as root, with a blank password:
# ssh root@192.168.0.202
You may find that DNS is not resolving correctly from within the FreeRunner. To correct this, simply add an OpenDNS cache address to the FreeRunner's /etc/resolv.conf:
# echo nameserver 208.67.222.222 >> /etc/resolv.conf # echo nameserver 208.67.220.220 >> /etc/resolv.conf
If your supported microSD card is placed in the FreeRunner, you can begin installing Debian onto it:
# wget http://pkg-fso.alioth.debian.org/freerunner/install.sh # DASH_BINSH=false SD_PART1_FS=vfat sh install.sh
Here, we set the DASH_BINSH environment variable to false, so that the script installs the Bash shell instead of Dash. The SD_PART1_FS variable is set to vfat, so that the /boot partition on the SD card will be formatted with vfat instead of ext2. Some versions of the FreeRunner's bootloader, u-boot, do not support ext2, and although there are ways to remedy this, it simply is easier to use a vfat-formatted partition. You should have Debian installed within the hour, depending on the speed of your Internet connection. I must say, the Debian installers sure have improved a lot since the Potato days.
You might have noticed that I said “supported microSD card”. According to the FreeRunner, all microSD cards are equal, but some microSD cards are more equal than others. The OpenMoko wiki has a page that lists all microSD cards that are known to work with the FreeRunner. I consulted this page and purchased two Kingston SD-C02G 2GB microSD cards. The FreeRunner recognized the cards, and I was able to partition them and write files to them. However, during installation, I received errors that were apparently related to the SD media. I replaced the 2GB Kingston card with the 512MB SanDisk card that came with the FreeRunner, and the installation worked flawlessly. I later transferred the partitions from the 512MB card to the 2GB using my Kubuntu desktop PC.
Once installation is complete, you will want to reboot into Debian. First, power off your FreeRunner. Once it has safely powered down, press and hold the AUX button (on the top-left side of the device), and press the power button until the u-boot menu appears. Press the AUX button until “Boot from SD” is selected, then press the power button again. After a minute or two, the zhone interface should appear and you should be able to make and accept phone calls, provided you are using a supported SIM card.
As with microSD cards, the FreeRunner is rather picky about which SIM cards it accepts. When I first began testing the FreeRunner, I was using a first-generation iPhone as my primary phone. The SIM from my iPhone worked perfectly in the FreeRunner. A couple weeks later, I bought an iPhone 3G and received a new SIM with it, which also worked well with the FreeRunner. I eventually returned my 3G iPhone and received another new SIM card from AT&T. The FreeRunner would not register with the AT&T network via the new SIM. I tried a T-Mobile SIM to make sure there were no hardware problems, and it worked fine. After many, many hours of struggling with this issue, I finally discovered that there is a bug in the FreeRunner firmware that causes problems with certain SIM cards (OpenMoko bug #666). My previous SIM cards had a vendor and version number of 4022; however, the new SIM I received from AT&T had vendor and version number 2022. Unfortunately, the 2022 cards are newer and do not work with the FreeRunner. As it turns out, the OpenMoko wiki has a page that lists the compatibility status of various SIM cards. The good news is that once I figured out the problem, I was able to visit a local AT&T store and request a new 4022 SIM card, which they happily gave me.
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Sponsored by AMD
Built-in forensics, incident response, and security with Red Hat Enterprise Linux 6
Every security policy provides guidance and requirements for ensuring adequate protection of information and data, as well as high-level technical and administrative security requirements for a system in a given environment. Traditionally, providing security for a system focuses on the confidentiality of the information on it. However, protecting the data integrity and system and data availability is just as important. For example, when processing United States intelligence information, there are three attributes that require protection: confidentiality, integrity, and availability.
Learn more about catching the bad guy in this free white paper.
Sponsored by DLT Solutions
| Designing Electronics with Linux | May 22, 2013 |
| Dynamic DNS—an Object Lesson in Problem Solving | May 21, 2013 |
| Using Salt Stack and Vagrant for Drupal Development | May 20, 2013 |
| Making Linux and Android Get Along (It's Not as Hard as It Sounds) | May 16, 2013 |
| Drupal Is a Framework: Why Everyone Needs to Understand This | May 15, 2013 |
| Home, My Backup Data Center | May 13, 2013 |
- New Products
- Linux Systems Administrator
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- Web & UI Developer (JavaScript & j Query)
- Designing Electronics with Linux
- Dynamic DNS—an Object Lesson in Problem Solving
- Using Salt Stack and Vagrant for Drupal Development
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi

It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Featured Jobs
| Linux Systems Administrator | Houston and Austin, Texas | Host Gator |
| Senior Perl Developer | Austin, Texas | Host Gator |
| Technical Support Rep | Houston and Austin, Texas | Host Gator |
| UX Designer | Austin, Texas | Host Gator |
| Web & UI Developer (JavaScript & j Query) | Austin, Texas | Host Gator |
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?





50 min 6 sec ago
7 hours 44 min ago
8 hours 19 sec ago
9 hours 51 min ago
15 hours 43 min ago
20 hours 15 min ago
20 hours 15 min ago
22 hours 15 min ago
1 day 7 hours ago
1 day 7 hours ago