Peter, as you can imagine, is busy over at NthCode, so I feel fortunate that he could take some time to participate in this interview:
1. Could you tell us a little bit about NthCode? For instance, what type of Linux projects do you typically undertake? What hardware platforms do you develop for?
Thanks for the opportunity, EIPI.
We've spent most of the last three years writing system software for a large mobile phone manufacturer's 2.5G and 3G Linux phones (unfortunately, I can't say who that is). We've also helped other customers develop software for embedded Linux media devices. These have all been ARM-based systems with similar hardware configurations to what you see in the Nokia Internet Tablets.
2. I read on your corporate website that you are an expatriate now working in China. Why did you chose China when establishing your company?
Well, I spent most of 2000 to 2002 backpacking around Asia -- and four months of that in China. After I returned home to the U.S., I felt a longing to be back in the middle of the amazing energy and changes taking place in Beijing. So I repacked my bag and moved. After arriving, I found a software development job working on one of the first Linux handsets. And, in 2005, I founded NthCode to focus on what I like and know best -- embedded Linux.
Beijing isn't heaven, but it's a very interesting place. And there are lots of great software developers here who are looking for the opportunity to work on new and exciting technology. So I feel Beijing is a natural fit for me and for NthCode.
(I should also say that I studied Chinese as my foreign language in college -- but I was absolutely the worst student in that class. So it's fair to say that I've had an interest in China for some time. My Chinese is functional, but not fluent, now.)
3. The reason I wanted to interview you was due to NthCode's recent porting of the latest Android v1.0 to the N810. This made a big splash over at Internet Tablet Talk. I assume that porting Android to the N810 is not a bread and butter type of work for you guys over at NthCode. Can you tell us a little about Tang Yongjun and the team, and their impetus to work on this particular project?
Well, in addition to Android being the hot new thing, we had received inquiries about whether or not we could do Android work. So I wanted us to get some experience and have some tangible proof that we could do it.
Yongjun is a talented hacker. And due to a lull in another project, he was not as busy as some of the other developers, so I asked him to try the port. It turned out to be a great learning experience for us. We try to use agile methods, specifically, the Scrum process, for the projects we run. We all work hard here. But Scrum keeps us focused on what's important and mostly lets us rest on the weekends. That being said, I found Yongjun on IM one Saturday night and asked him how he was doing, and he answered, 'I almost have the display driver working.' He said he was having fun.
4. Many of us flocked to your corporate website to see the video of the N810 booting up into the Android desktop environment. It was mind blowing. The previous Android port which qwerty12, penguinbait, and b-man worked on in the summer ran inside Maemo as an application. NthCode's port, as I understand it, allows you to boot the device into Android directly. Many of the tablet community are like myself - interested in technology, have a basic understanding of hardware and software, but are not developers. Can you explain to us in lay terms the challenges that you had to overcome to make this happen, and the level of effort involved?
Ha! I mostly expected people to say, 'It's been done already. It boots slowly. Who cares?'
The analog in the PC world to what we did would be to take a PC that typically runs Fedora Linux and make it run Ubuntu Linux. I don't want to say it's just that easy, but it's definitely doable if you know how the Linux kernel interfaces with embedded hardware. What Penguinbait, Qwerty12, and B-man did is actually a bit more interesting: They took the equivalent of a PC that is already booted into Fedora and made it launch Ubuntu. Very slick!
The biggest technical challenge we faced was to bring-up of Android after we had merged the N810 and Android kernels. We had to work past a number of issues related to file systems, display drivers, and random reboots. But, we took them one at a time and eventually got the system up. This bring-up piece took Yongjun more than a week of focused effort.
5. At the time your port was announced, things like the wifi and touchscreen were not working properly, if I recall correctly. Has there been any work at NthCode on resolving these issues? For instance, using the open source wifi drivers with the 2.6.25 kernel that you are using?
Actually, the touchscreen worked fine. But you're right that WiFi did not work.
Since our initial release, we've enabled the Android Debug Bridge (ADB) and updated the display driver to fix some nagging video issues. The ADB lets your PC debug a USB-connected Android device. This includes ssh-like functionality and the ability to use the Eclipse Integrated Development Environment to single-step through Android code running on a device.
And, as of just today, WiFi is working in our 2.6.25 kernel. That being said, you have to use ADB to get inside the device to configure it. So we are not at the point of having WiFi ready for casual users.
6. Are you planning on getting this to work on the N800? I believe that the on-screen keyboard might be an issue here.
Our primary focus right now is to make the N810 port functional and stable enough for our needs. If someone else could do the N800 changes, we would gladly merge them into our kernel and userspace so that more of these devices can run Android. That being said, we can sure try to add N800 support later if we have time.
7. As with many great inventions, simultaneous work by independent parties occurs. Obviously, I am referring to Solca's work on NITdroid. Solca is using an updated 2.6.28 kernel, and has incorporated wifi support. Were you aware of their work, or did it come as a surprise to hear of the independent port they came up with?
I wish we had known of Solca's effort earlier, so that we could have put our heads together with his. But I'm very happy that he is getting the recognition he much deserves for his port. It's wonderful that he's been able to make WiFi and the newer kernel work.
8. Solca's work has really picked up. Are you eyeing any of the developments on NITdroid for inclusion in your port?
We have leveraged some of the work he's done in his Android port to make ours better. The display driver and WiFi fixes I mention above are based on the work he did. So we owe him a big, 'Thanks!' I hope some of our changes can help him out, too..
9. Now that you have some development work on the N8X0 series of devices under your belts - do you see any other projects that you want to undertake on this hardware platform?
I'm interested to see what we can do in the Android user-space on the N810. And I'd sure like us to build some kind of Android application that people can download to their Android N810s and other Android devices, even if it's just something simple and free.
10. Do you own and use a Nokia Internet Tablet?
We have three Nokia N810s at the office that are used by our developers for various projects. If we can make power management work in Android on the N810, I think it would be fun to have one just for bragging rights. But I'm one of those folks who is forever connected to his laptop, so I don't use one on a daily basis. I think mobile devices are getting better at replacing laptops, but they aren't quite there, yet.
11. Anything you or your team at NthCode would like to say to the Internet Tablet community?
In addition to Solca, who's helped us with some of his patches, I'd like to thank Penguinbait, Qwerty12, and B-man for their documentation on what they did in the Android prerelease port. We were able to use that as a basis for our work. As well, I think Nokia deserves a round of applause for creating such wonderful hackable hardware.
'Post' Mortem by EIPI:
First of all, thank you Peter for participating in this interview. And a big thank you to Tang Yongjun, the developer who worked on getting the latest Android to boot on the N810.
Being new to this arena of technology, I thought I had all my ducks in a row, but I did manage to make an error regarding the touchscreen not working on NthCode's Android port. You can clearly see that the touchscreen works in the last seconds of the video on their site.
NthCode's interest in developing applications for the N810 Android user space is promising news. The effort that Solca and NthCode have put into getting a bootable Android on the N8X0 devices is a welcome development in our community. It means that we may have more to select from when it comes to picking an operating system to power our tablets. This is a great thing!