From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: References: <4e7404bb.270b650a.3d87.ffffc50c@mx.google.com> Date: Fri, 16 Sep 2011 19:40:07 -0700 Message-ID: From: John Floren To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Subject: Re: [9fans] Announcing Inferno for Android phones Topicbox-Message-UUID: 251de886-ead7-11e9-9d60-3106f5b1d025 We've only had one device with an actual radio in it, so we haven't been able to test on anything but the Nexus S, but there's probably a total of 100 lines of device-specific code. Mostly, you have to figure out: 1. The screen dimensions and the color depth 2. Which devices are for the touchscreen, which are for the buttons emu/port/main.c and emu/Android/screen.c contain all the device-specific code, I think. If there is any justice, the radio interface will be the same--we talk to "rild", the radio daemon, rather than directly with the hardware. John On Fri, Sep 16, 2011 at 7:35 PM, Devon H. O'Dell wr= ote: > How difficult is it to get specs and port this to other android devices? = I'd > love to run this on my motorola droid if I could get all the radios worki= ng. > > --dho (via said droid) > > On Sep 16, 2011 10:25 PM, "paul.a.lalonde@gmail.com" > wrote: >> For all these plan9ish things on OSX I run a case-sensitive file-system = in >> a file; just use the Disk Utility to make one and then mount it. I link = mine >> into my home directory and use it for all case-sensitive apps. >> Paul >> >> Sent from my HTC Inspire=99 4G on AT&T >> >> ----- Reply message ----- >> From: "John Floren" >> To: "Fans of the OS Plan 9 from Bell Labs" <9fans@9fans.net>, >> >> Subject: [9fans] Announcing Inferno for Android phones >> Date: Fri, Sep 16, 2011 7:01 pm >> >> >> One caveat that I just came across: If you're trying to set up your >> phone from Mac OS X, it's quite possible that the case-insensitive >> filesystem will bite you. We have two directories at the same level, >> named "android" and "Android". If you do an adb push from OS X, >> they'll both end up in a directory called "android". Here's how you >> can fix it: >> >> (run adb shell) >> # mkdir /data/inferno/Android >> # mv /data/inferno/android/arm /data/inferno/Android/ >> >> There may be other problems lurking, but I'm pretty sure all of the >> stuff Inferno needs is all lowercase. >> >> >> John >> >> On Fri, Sep 16, 2011 at 3:23 PM, John Floren wrote: >>> We would like to announce the availability of Inferno for Android >>> phones. Because our slogan is "If it ain't broke, break it", we >>> decided to replace the Java stack on Android phones with >>> Inferno. We've dubbed it the Hellaphone--it was originally Hellphone, >>> to keep with the Inferno theme, but then we realized we're in Northern >>> California and the change was obvious. >>> >>> The Hellaphone runs Inferno directly on top of the basic Linux layer >>> provided by Android. We do not even allow the Java system to >>> start. Instead, emu draws directly to the Linux framebuffer (thanks, >>> Andrey, for the initial code!) and treats the touchscreen like a >>> one-button mouse. Because the Java environment doesn't start, it only >>> takes about 10 seconds to go from power off to a fully-booted Inferno >>> environment. >>> >>> As of today, we have Inferno running on the Nexus S and the Nook >>> Color. It should also run on the Android emulator, but we haven't >>> tested that in a long time. The cell radio is supported, at least on >>> the Nexus S (the only actual phone we've had), so you can make phone >>> calls, send texts, and use the data network. >>> >>> The Inferno window manager has been re-worked with cell phone use in >>> mind. Windows are automatically sized to fill the whole screen. The >>> menu has been moved to the top and the menu items have been made >>> significantly larger. Physical buttons on the phone are now used to do >>> many common tasks: >>> >>> =A0 =A0(these keys are for the Nexus S, different bindings are used for >>> the Nook, which has different keys available) >>> =A0 =A0* Back: Close the current window >>> =A0 =A0* Menu: Toggle the onscreen keyboard >>> =A0 =A0* Home: Minimize the current window >>> =A0 =A0* Power: Turn off the screen >>> =A0 =A0* Power+Volume Up: Open the screen brightness widget >>> =A0 =A0* Power+Volume Down: Turn off the phone >>> =A0 =A0* Power+Home: Restart Inferno >>> >>> Installation is reasonably simple. You'll need the Android SDK >>> (http://developer.android.com/sdk/index.html), with the platform-tools >>> package installed for the adb and fastboot utilities. We also strongly >>> recommend installing CyanogenMod on your phone before >>> proceeding--that's what we use to test. >>> >>> First, make absolutely sure you have the "adb" and "fastboot" >>> commands in your path--see the previous paragraph regarding the >>> SDK and try running "adb" to be sure. Download the tarball from >>> http://bitbucket.org/floren/inferno/downloads/hellaphone.tgz and >>> unpack it in your root. You should end up with a /data/inferno >>> directory (we put it there because of the Inferno build >>> process). Then, go to the /data/inferno/android directory and run >>> the Reflash-Nexus-S.sh script (assuming you have a Nexus S. Run >>> Reflash-Nook-Color.sh if you have a Nook). This will >>> automatically set up the phone to boot into either Inferno or the >>> regular Java environment--during bootup, the screen will go solid >>> white; if you touch the screen at this point, it will boot into >>> the regular Android environment, otherwise it will timeout and go >>> to Inferno. However, at this point you're not yet ready to boot >>> into Inferno, so reboot the phone and touch the screen to go into >>> the regular Android UI. The final task is to run the command "cd >>> /data/inferno; ./parallel-push.sh". Reboot, let it boot into >>> Inferno, and you're ready to go. >>> >>> You can also clone the repository >>> (http://bitbucket.org/floren/inferno/) and build it yourself, but this >>> is a significant effort. I do not recommend it if you wish to simply >>> try the system, but if you want to do development you should get the >>> repository. >>> >>> Disclaimer: If you break your phone, it's not our fault. Don't email >>> us, don't come knocking on our door, and don't call us--oh wait, you >>> won't be able to do that anyway, your phone is broken! >>> >>> Credit where credit is due: Ron Minnich came up with the initial >>> idea--we've been kicking the idea of a Plan 9/Inferno phone around for >>> years. Our summer interns, Joel Armstrong and Joshua Landgraf, did the >>> lion's share of the work of making Inferno into a usable cell phone >>> OS--no small feat, considering that neither had any Limbo or Inferno >>> experience before the start of the summer! They re-wrote the UI, >>> puzzled out the undocumented cell radio interface, figured out audio, >>> worked to make Inferno more portable across phones, and generally >>> figured out how to make Inferno and the Android kernel coexist >>> peacefully. Andy Jones, another intern, also did some very early work >>> with Android that helped us figure out the Android init process and >>> how to build for Android. I took care of getting Inferno running on >>> the phone in the first place and have been adding things occasionally >>> since then. We would also like to thank Andrey Mirtchovski for >>> providing the OLPC framebuffer code (which ported to the Android >>> phones relatively easily), and of course Charles Forsyth for keeping >>> the Inferno torch lit all these years (and helping me figure out some >>> puzzling problems throughout the summer)! >>> >> >