<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8396741493310463586</id><updated>2026-04-06T00:17:44.186-07:00</updated><category term="iphone 3g"/><category term="audio"/><category term="baseband"/><category term="ipod touch"/><category term="multitouch"/><category term="status"/><title type='text'>Linux on the iPhone</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://linuxoniphone.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-8701732800289875674</id><published>2010-07-05T06:58:00.001-07:00</published><updated>2010-07-05T07:53:21.699-07:00</updated><title type='text'>What&#39;s up with Planetbeing?</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;Many of you asked in the past 1 month or so, where is Planetbeing? What is he doing? Has he abandoned the project?&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;The answer to the last question is a definite NO.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;While I don&#39;t know enough of his private life to shed you light of exactly what he is doing and his whereabouts but I can tell you that I have been in constant contact with him along with other iphone dev-team members through IRC. Apart from having to look after his academic stuff and a few paid odd jobs to earn him some pocket money, he was recently actively involved in the iOS jailbreak with Comex. He is now indulging himself in the excitement of getting the iPhone 4 baseband unlocked with Musclenerd, as you can tell from his tweets.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;Even when he was working on such things, he still has his mind on iPhonelinux as can be seen from the excerpt of the conversation we had on IRC below:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:23:18 |planetbeing|&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;saurik: CPICH: you might be interested in this: http://RED-ACTED/tfp.c&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:24:01 |planetbeing|&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;This is what I&#39;ve been using to explore the kernel with the tfp patch. You need a copy of &quot;tense3&quot; (the fixed up iPhone 4 kernel dump) to use some of the page table related commands.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:24:30 |planetbeing|&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;CPICH: this will be super-useful for like iPhone Linux stuff because we can map in whatever hardware region we want and peek at the current register settings.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:25:16 |CPICH|&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;ok&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:30:46 |Zf[idling]|&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;once you can boot linux&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:30:47 *&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Zf[idling] runs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:34:13 |CPICH|&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;can modify it to work on previous platforms for yet to be ported drivers though&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:35:18 |planetbeing|&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Yup.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Jun 30 16:36:40 |planetbeing|&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;times new roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;That&#39;s why I wrote a whole program to mess with it easily.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;Also, a few other folks on #iphonelinux such as Bluerise, ricky26, nickp6666, Alex, James etc.  are making steady progress in making minor improvements such as vibrator on 3g, porting of Ultrasn0w, usb, multitouch accuracy, Froyo on 3g etc. So, while waiting for Planetbeing to provide direction on major items such as PMU and GPU, there are no lack of activities.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;Finally, you may ask, what can&#39;t Planetbeing provide updates on this blogs, surely it won&#39;t take him a few minutes?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;Well, there is simply nothing for him to update on the iphonelinux front at this moment, and writing a non-technical update with no technical substance is very &quot;unPlanetbeing&quot;, so it is up to n00b like me to provide this &quot;non-update&quot; update.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/8701732800289875674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/8701732800289875674'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/07/whats-up-with-planetbeing.html' title='What&#39;s up with Planetbeing?'/><author><name>CPICH</name><uri>http://www.blogger.com/profile/07912056455402609087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-7928210905451806085</id><published>2010-05-22T17:06:00.001-07:00</published><updated>2010-05-22T17:12:58.874-07:00</updated><title type='text'>Nothing much new</title><content type='html'>As you guys can probably tell, I&#39;ve been mostly busy with other real life stuff and I haven&#39;t been working on Android much. That will be changing pretty soon however.&lt;br /&gt;&lt;br /&gt;I was able to have a lot of fun doing an interview on &lt;a href=&quot;http://thisweekin.com/thisweekin-android/twia-17-with-david-wang/&quot;&gt;This Week in Android&lt;/a&gt;. Hopefully I wasn&#39;t too geeky for them!&lt;br /&gt;&lt;br /&gt;There&#39;s nothing else new, I think. I&#39;ll try to integrate in the backlight stuff first and some of the cleanup that Bluerise did on the layout for the Android tree. That will be very important moving forward.&lt;br /&gt;&lt;br /&gt;After that, there&#39;s a possibility that before moving onto the power management (which might be a fairly lengthy battle), I can whip up an installer and updater for current and future revisions that works through Cydia. Do you guys think I should work on that first or dive straight into the power management stuff?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/7928210905451806085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/7928210905451806085'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/05/nothing-much-new.html' title='Nothing much new'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-2323944370950358621</id><published>2010-05-20T16:25:00.001-07:00</published><updated>2010-05-20T16:31:32.312-07:00</updated><title type='text'>iPhone 3G binaries!</title><content type='html'>I wrote up a how-to for PC World on how to put Android on the iPhone 3G and the iPhone 2G and it went up today. I wanted to be there to tweet about it when it went up, but I&#39;ve been keeping really strange hours lately and I wasn&#39;t awake for it when it went up.&lt;br /&gt;&lt;br /&gt;But here are the binaries (for &lt;a href=&quot;http://www.pcworld.com/downloads/file/fid,84612-order,4/description.html&quot;&gt;iPhone 3G&lt;/a&gt;, and for &lt;a href=&quot;http://www.pcworld.com/downloads/file/fid,84613-order,4/description.html&quot;&gt;iPhone 2G&lt;/a&gt;), graciously hosted by PC World!&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.pcworld.com/article/196595/how_to_install_android_on_your_iphone.html&quot;&gt;Please read the how-to that I wrote for PC World to on installing it&lt;/a&gt;. The steps are basically the same as before, except you can put the firmware in a directory on the iPhone OS data partition. This means that you don&#39;t have to modify the ext2 partition as before.&lt;br /&gt;&lt;br /&gt;One thing I didn&#39;t mention is that you could perform the installation on OS X without a Linux VM if you recompile &lt;code&gt;loadibec&lt;/code&gt; and &lt;code&gt;oibc&lt;/code&gt;. Otherwise, the directions are the same.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/2323944370950358621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/2323944370950358621'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/05/iphone-3g-binaries.html' title='iPhone 3G binaries!'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-1990133044648424749</id><published>2010-05-14T14:21:00.000-07:00</published><updated>2010-05-14T16:19:00.141-07:00</updated><title type='text'>Status update</title><content type='html'>I know the binaries for the iPhone 3G are taking a while. Everything is basically done and all the code I have is in the source repositories so people are free to build it for themselves. However, I wanted to improve the packaging slightly to ease installation (no longer requiring people to modify ext2 partitions). The release of the binaries (and a how-to) will be sometime within the next week.&lt;br /&gt;&lt;br /&gt;The binaries will have more features than the iPhone 3G demo showed: It will have full calling and sound support. The code for that (and everything else) is already finished and is in my github if you would like to check it out.&lt;br /&gt;&lt;br /&gt;Meanwhile, I am working on some stuff that is slightly more fun. Last night, I brought openiboot for the first-generation iPod touch up to scratch so that it supports all the features the other ports of openiboot support: sound, multitouch and SDIO (for WLAN) are the notable things I had to fix. Earlier today, I figured out how to drive the piezoelectric tweeter on the iPod touch.&lt;br /&gt;&lt;br /&gt;Hopefully, we&#39;ll be able to roll out the iPod touch binaries with the 3G binaries and get on with the real work: power management and the little details that will make Android a truly viable alternative on our three early ports.&lt;br /&gt;&lt;br /&gt;In the meantime, I hope to find some time to play with the piezoelectric buzzer on the iPod. Two neat projects I think I or some other enterprising person should do with it:&lt;br /&gt;&lt;br /&gt;The first one is implementing an interface for it that is compatible with QBASIC&#39;s PLAY statement. QBASIC was my first experience with computer programming. In fact, I learned the language exactly concurrently with English.&lt;br /&gt;&lt;br /&gt;The second is taking the considerable body of knowledge people have about programming PC Speakers and getting them to output &lt;span style=&quot;font-weight:bold;&quot;&gt;PCM sounds&lt;/span&gt; from them and adapting them to the iPhone. It would be an awesome hack to get the iPod touch speaker playing some real music! I am reading &lt;a href=&quot;http://fly.cc.fer.hr/GDM/articles/sndmus/speaker2.html&quot;&gt;this page&lt;/a&gt; for some hints, but I would love suggestions or help from people who may have had more experience.&lt;br /&gt;&lt;br /&gt;One of the things I have always really wanted to do is to create a demoscene-style demo on the iPhone. I&#39;ve always admired the demoscene and I want to be cool like them but I don&#39;t have the right skillset to do the &quot;graphix&quot; and music. It would be cool if we can get a group together (if any of my readers are demosceners!) and create the first iPhone demo to run on bare metal.&lt;br /&gt;&lt;br /&gt;P.S. I switched over to IntenseDebate for the comments. One of the reasons is that blogger lets a lot of spam comments through, forcing me to do moderation on older posts (I only filter comments that are clearly spam: I let anything else through, including flames, trolling, etc.). I would rather not have to perform moderation so I&#39;m hoping IntenseDebate will do a better job. Also, some of these posts get a huge volume of comments and I think IntenseDebate would do a better job organizing the comments.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/1990133044648424749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/1990133044648424749'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/05/status-update.html' title='Status update'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-4218603391822439391</id><published>2010-05-06T16:37:00.000-07:00</published><updated>2010-05-06T17:34:22.548-07:00</updated><title type='text'>Android on iPhone 3G</title><content type='html'>I wrote a piece about this that PC World was nice enough to run.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.pcworld.com/article/195789/android_now_running_on_iphone_3g.html&quot;&gt;Click here to read the PC World article for more details!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here&#39;s the video demo that I put up:&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/uJj0kHQgC9w&amp;hl=en_US&amp;fs=1&amp;&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/uJj0kHQgC9w&amp;hl=en_US&amp;fs=1&amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Thanks to ricky26 and bluerise for their time on the multitouch, many others who worked on openiboot, and my friend Alisa for the graphical changes (visit her site at &lt;a href=&quot;http://galiaxy.net/&quot;&gt;galiaxy.net&lt;/a&gt;)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/4218603391822439391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/4218603391822439391'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/05/android-on-iphone-3g.html' title='Android on iPhone 3G'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-4523134430413838511</id><published>2010-05-04T15:55:00.000-07:00</published><updated>2010-05-04T17:47:23.889-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="iphone 3g"/><title type='text'>Creating a WM8991 driver</title><content type='html'>Thought it might be interesting for people to take a peek at how we work.&lt;br /&gt;&lt;br /&gt;As I stated in the previous blog post, it&#39;s necessary for us to figure out the WM8991 audio codec before we can call from the baseband (or listen to music). This is an interesting task because while there are datasheets for the WM8991 codec, and a Linux driver for it, those cannot be used immediately since it doesn&#39;t tell us where the inputs and outputs of the chip are connected to, and what protocol and clock divider settings the iPhone uses to talk to the chip (and must be configured on the chip). Those things are purely implementation specific.&lt;br /&gt;&lt;br /&gt;In order to extract those settings, we need to be able to see those settings while the iPhone OS kernel is up and running and sound is playing. The chip does not use &lt;a href=&quot;http://en.wikipedia.org/wiki/Memory-mapped_I/O&quot;&gt;MMIO&lt;/a&gt;, so the register settings cannot be directly peeked at through &lt;code&gt;/dev/kmem&lt;/code&gt;... but we&#39;re on the right track. Instead, &lt;a href=&quot;http://en.wikipedia.org/wiki/I%C2%B2C&quot;&gt;I2C&lt;/a&gt; is used to communicate with the codec for setting those registers. It turns out that since some Wolfson codecs do not allow reading from the codec registers (only writing), the operating system has to &quot;remember&quot; what values registers are currently set to. That is, they are cached by operating system?&lt;br /&gt;&lt;br /&gt;Where are they cached? Well, a quick look at the disassembly shows us some code that does the following (in pseudo-C)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;if register &gt; *(this + 0xA0)&lt;br /&gt;  return 0&lt;br /&gt;&lt;br /&gt;return *((uint16_t*)(*(this + 0xA8) + register * 2))&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Basically, we see that the class member at offset 0xA0 contains the total number of registers accessible on the Wolfson codec, while member 0xA8 is a pointer to an array of 16-bit values that represent the current values of those registers!&lt;br /&gt;&lt;br /&gt;Now we seem to be home free... except for the fact that IO Kit C++ objects are dynamically allocated on the heap at runtime and there is no way to tell using static analysis where they will be during a particular boot of an operating system. How will we find the location of this C++ class (AppleWM8991Audio) so that we can peek at those values?&lt;br /&gt;&lt;br /&gt;The answer is that every object in the IOKit subsystem is anchored to the IORegistry tree. You can actually take a peek at the tree from userland with the &lt;code&gt;ioreg -l&lt;/code&gt; command. Every single node you see corresponds to a C++ object. However, the trouble is that there is no userland call to extract the in-kernel addresses of those objects... and that&#39;s what we need to be able to use &lt;code&gt;/dev/kmem&lt;/code&gt; to peek at the right places.&lt;br /&gt;&lt;br /&gt;Fortunately, the root of the IORegistry is pointed to by a constant, and it is possible to traverse the IORegistry manually from the root (provided you know the layout of all the C++ classes!). This is exactly what I wrote a &lt;a href=&quot;http://iphwn.org/planetbeing/spelunk-3.0.c&quot;&gt;utility called spelunk&lt;/a&gt; to perform: use &lt;code&gt;/dev/kmem&lt;/code&gt; to manually traverse the IORegistry and find the in-memory instance, instance size, and vtable location of all of the objects in the IORegistry. Armed with this information, one can use &lt;code&gt;dd&lt;/code&gt; and &lt;code&gt;/dev/kmem&lt;/code&gt; to peek at the state of any of the objects inside kernel memory.&lt;br /&gt;&lt;br /&gt;I made a series of dumps: &lt;code&gt;registers-call-headphones&lt;/code&gt;, &lt;code&gt;registers-call-speakers&lt;/code&gt;, &lt;code&gt;registers-max-headphones&lt;/code&gt;, &lt;code&gt;registers-max-speakers&lt;/code&gt;, &lt;code&gt;registers-min-headphones&lt;/code&gt;, &lt;code&gt;registers-min-speakers&lt;/code&gt;. Here is a diff of min-speakers and max-speakers, just to show you what we&#39;re looking for:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:7pt;&quot;&gt;&lt;pre&gt;&lt;br /&gt;--- hex-registers-min-speakers 2010-05-04 15:44:19.000000000 -0700&lt;br /&gt;+++ hex-registers-max-speakers 2010-05-04 15:45:39.000000000 -0700&lt;br /&gt;@@ -2,7 +2,7 @@&lt;br /&gt; 00000010  20 80 20 80 00 00 c0 00  c0 01 00 00 00 01 c0 00  | . .............|&lt;br /&gt; 00000020  c0 00 00 00 01 00 00 17  00 10 40 10 00 00 04 08  |..........@.....|&lt;br /&gt; 00000030  8b 00 8b 00 8b 00 8b 00  b0 00 b0 01 66 00 22 00  |............f.&quot;.|&lt;br /&gt;-00000040  f9 00 f9 01 00 00 03 01  57 00 00 01 ec 01 00 00  |........W.......|&lt;br /&gt;+00000040  f9 00 f9 01 00 00 03 01  57 00 00 01 ff 01 00 00  |........W.......|&lt;br /&gt; 00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|&lt;br /&gt; 00000060  00 00 00 00 00 00 80 01  00 00 00 00 03 00 00 00  |................|&lt;br /&gt; 00000070  00 00 08 00 00 00 00 00  87 00 85 00 fc 00 00 00  |................|&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So it&#39;s fairly obvious how volume control for the speakers are done. Anyway, hopefully we can plug in these values, use the current i2s drivers, and audio will work!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/4523134430413838511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/4523134430413838511'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/05/creating-wm8991-driver.html' title='Creating a WM8991 driver'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-2221351892059331002</id><published>2010-05-02T11:25:00.000-07:00</published><updated>2010-05-02T11:53:33.354-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="baseband"/><category scheme="http://www.blogger.com/atom/ns#" term="iphone 3g"/><title type='text'>Cell network association and SMS on iPhone 3G</title><content type='html'>This is just a small, incremental update. It looks like we&#39;re currently blocked on a driver for the WM8991 codec. This is because instead of sound data that should come out of the speakers directly to the baseband, the Wolfson codec now controls the speaker as well on the 3G. This is a significantly more sane design than what the 2G had, but it causes us some complications.&lt;br /&gt;&lt;br /&gt;First, now a WM8991 driver has to be written before we can get any sound out of the device. This is contrary to the 2G where we can test the i2s functionality of the SoC relatively independently.&lt;br /&gt;&lt;br /&gt;Second, in order to make or receive calls with the iPhone 3G, the WM8991 driver must be written and cooperating with the baseband. This is a significantly more complex arrangement than on the 2G, where that functionality can be controlled entirely through the baseband.&lt;br /&gt;&lt;br /&gt;However, this is still all not very hard. If we had a timetable, I&#39;d say we&#39;re &quot;on track&quot;. But we don&#39;t so don&#39;t ask. :P&lt;br /&gt;&lt;br /&gt;Also, as a result of this investigation, I can associate to the cell network and send and receive text messages from the 3G now. Of course, I had to port ultrasn0w into openiboot to do it... I had forgotten all about the fact that my phone was unlocked by ultrasn0w until now. :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/2221351892059331002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/2221351892059331002'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/05/this-is-just-small-incremental-update.html' title='Cell network association and SMS on iPhone 3G'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-3444987977692088645</id><published>2010-04-30T16:44:00.000-07:00</published><updated>2010-04-30T17:07:51.831-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iphone 3g"/><category scheme="http://www.blogger.com/atom/ns#" term="ipod touch"/><category scheme="http://www.blogger.com/atom/ns#" term="multitouch"/><title type='text'>iPhone 3G Multi-touch</title><content type='html'>I finished writing a driver for the Zephyr2 on the iPhone. It&#39;s the same multi-touch solution that Apple has used starting from the first generation iPod touch and up to and including the iPad.&lt;br /&gt;&lt;br /&gt;Now, of course this shouldn&#39;t be construed as a promise to support the iPad eventually, but this multi-touch driver is definitely a concrete milestone that is important for pretty much all of Apple&#39;s mobile Internet devices.&lt;br /&gt;&lt;br /&gt;More immediately, this is pretty much &lt;span style=&quot;font-style: italic;&quot;&gt;the&lt;/span&gt; sole remaining blocking issue on the first-gen iPod touch and one of the two major issues on the iPhone 3G. The other issue on the iPhone 3G is baseband SPI. I&#39;m wondering if we can get away with just using the debug uart to make calls (if we don&#39;t care about having a fast 3G data connection yet).&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/x3vkxcKN4WQ&amp;hl=en&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/x3vkxcKN4WQ&amp;hl=en&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Also, I&#39;d like some opinions from this blog&#39;s readers: More frequent updates? Or just document the major advances?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/3444987977692088645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/3444987977692088645'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/04/iphone-3g-multi-touch.html' title='iPhone 3G Multi-touch'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-167979352147912706</id><published>2010-04-26T16:57:00.000-07:00</published><updated>2010-04-26T17:06:58.059-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuNWjDWkLdTdUWCyOTUIAV024vLwJe65xPB1CsiLsWofs9SMEMxyTD0RR5LCev335FQ0TN9ZFhKbV2x08JlbPKGEuBrily5psbLfV7PZFXXoFZONuR-0S_SlRdfZAuUv3ds9RBOrogMop7/s1600/IMG_0116.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuNWjDWkLdTdUWCyOTUIAV024vLwJe65xPB1CsiLsWofs9SMEMxyTD0RR5LCev335FQ0TN9ZFhKbV2x08JlbPKGEuBrily5psbLfV7PZFXXoFZONuR-0S_SlRdfZAuUv3ds9RBOrogMop7/s320/IMG_0116.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5464599909599498146&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;The port to the iPhone 3G is coming along. This is a picture of an iPhone 3G booting into a BusyBox / Buildroot shell. As you can see, wireless networking is working great. We can also talk to the baseband over the debugging channel. This might be enough to get calling, etc., working but we may need to figure out the SPI transport.&lt;br /&gt;&lt;br /&gt;I&#39;d still like to get the WM8991 codec working for it in openiboot (shouldn&#39;t be much trouble since there&#39;s a datasheet), just so we can iron out any quirks before testing it inside the kernel. We also need a new multi-touch driver (they&#39;ve upgraded from Zephyr to Zephyr2). After that, we&#39;ll have a working port of Android.&lt;br /&gt;&lt;br /&gt;Also, for existing developers and testers, I&#39;ve implemented the Android wi-fi driver extensions so WLAN should be working better now. I know people had problems associating with WPA protected networks, etc. See if this update helps!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/167979352147912706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/167979352147912706'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/04/port-to-iphone-3g-is-coming-along.html' title=''/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuNWjDWkLdTdUWCyOTUIAV024vLwJe65xPB1CsiLsWofs9SMEMxyTD0RR5LCev335FQ0TN9ZFhKbV2x08JlbPKGEuBrily5psbLfV7PZFXXoFZONuR-0S_SlRdfZAuUv3ds9RBOrogMop7/s72-c/IMG_0116.JPG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-2572975333112983051</id><published>2010-04-24T01:53:00.000-07:00</published><updated>2010-04-24T02:10:00.624-07:00</updated><title type='text'>Android repos are up</title><content type='html'>We&#39;ve gotten a tremendous response -- far more than I&#39;ve actually anticipated before the release. I would like to thank the community for their interest. The amount of support and enthusiasm that was displayed was truly humbling to someone used to cynicism about this project.&lt;br /&gt;&lt;br /&gt;The thing I&#39;m most excited about is the fact there are now many developers working on several different things... a pretty big change from when I was hacking on the source tree virtually alone. There are developers actively working on the first generation iPod port, the iPhone 3G port, and a second-generation iPod touch port and things are moving much more quickly than I&#39;ve anticipated. With so many helping hands, I&#39;m sure that we can get these ports to production quality.&lt;br /&gt;&lt;br /&gt;To coordinate our efforts, I&#39;ve setup a series of git repositories on GitHub. You can clone the Android tree using Google&#39;s repo tool thus:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;repo init -u git://github.com/planetbeing/platform_manifest.git -b android-sdk-1.6_r2-iphone&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This command populates the majority of the tree from the main Android kernel.org repositories, with any changed project from my tree.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;git://github.com/planetbeing/kernel_common.git branch android-2.6.32-iphone&lt;/code&gt; is our kernel tree. It is included in the main repo checkout as well.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;git://github.com/planetbeing/iphonelinux.git&lt;/code&gt; as always is our openiboot/bootloader tree. New hardware support will be trialled there and then ported into the Linux kernel.&lt;br /&gt;&lt;br /&gt;A fellow with the nickname of &quot;konaya&quot; on IRC has volunteered to administer a website for us at &lt;a href=&quot;http://www.idroidproject.org&quot;&gt;http://www.idroidproject.org&lt;/a&gt;. We can use the wiki to document iPhone Linux/iDroid and the forums to provide help to newcomers. We also have a developer mailing list (please ask in IRC if you wish to get added to that).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/2572975333112983051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/2572975333112983051'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/04/android-repos-are-up.html' title='Android repos are up'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-4473410892118055950</id><published>2010-04-22T19:49:00.001-07:00</published><updated>2010-04-22T20:47:02.910-07:00</updated><title type='text'>A to-do list</title><content type='html'>I&#39;m gratified at a lot of the developers that want to help! This is the only way this project can stay alive. That being said, let&#39;s start to get a little organized. Here&#39;s a to-do list:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://theiphonewiki.com/wiki/index.php?title=IPhoneLinux_To-Do&quot;&gt;http://theiphonewiki.com/wiki/index.php?title=IPhoneLinux_To-Do&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I&#39;m proposing that unless someone wants to step in to host and administer an iPhone Linux website/wiki/forums, we use the iPhone Wiki to exchange information since it&#39;s there already. That said, Be Bold and work on whatever you like! If you have patches to openiboot, send them using git. If you have patches for the kernel or Android stuff, just contact me with it (IRC preferred, e-mail is okay) and I&#39;ll see about how we can publish them.&lt;br /&gt;&lt;br /&gt;I&#39;ll personally be focusing on the first gen iPod touch and 3G port since I think I have a comparative advantage in that area.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/4473410892118055950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/4473410892118055950'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/04/to-do-list.html' title='A to-do list'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-3403861899194575680</id><published>2010-04-21T17:32:00.000-07:00</published><updated>2010-04-22T17:16:20.611-07:00</updated><title type='text'>Android running on iPhone!</title><content type='html'>I&#39;ve been working on this quietly in the background. Sorry about the initial video quality, but YouTube promises that the quality will get better as the video gets processed more. The back part of the version I uploaded to Vimeo was cut off.&lt;br /&gt;&lt;br /&gt;&lt;object height=&quot;385&quot; width=&quot;480&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/5yO2KQHkt4A&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/5yO2KQHkt4A&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;385&quot; width=&quot;480&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I think that says it all, really. Donations via paypal to planetbeing at gmail.com. If you&#39;d like to help, come join #iphonelinux on irc.osx86.hu.&lt;br /&gt;&lt;br /&gt;Thanks to CPICH for reversing support, harmn1, posixninja, jean, marcan and saurik for patches, and last but not least, TheSeven for his work on the FTL.&lt;br /&gt;&lt;br /&gt;Pre-built images and sources at &lt;a href=&quot;http://graphite.sandslott.org:4080/pub/idroid/idroid-release-0.1a.tar.bz&quot;&gt;http://graphite.sandslott.org:4080/pub/idroid/idroid-release-0.1a.tar.bz&lt;/a&gt;. Read the README. For generic openiboot instructions, there&#39;s plenty now that you can search for.&lt;br /&gt;&lt;br /&gt;It should be pretty simple to port forward to the iPhone 3G. The 3GS will take more work. Hopefully with all this groundwork laid out, we can make Android a real alternative or supplement for iPhone users. Maybe we can finally get Flash. ;)&lt;br /&gt;&lt;form action=&quot;https://www.paypal.com/cgi-bin/webscr&quot; method=&quot;post&quot;&gt;&lt;br /&gt;&lt;input type=&quot;hidden&quot; name=&quot;cmd&quot; value=&quot;_s-xclick&quot;&gt;&lt;br /&gt;&lt;input type=&quot;hidden&quot; name=&quot;hosted_button_id&quot; value=&quot;FHJB9J59JA3CW&quot;&gt;&lt;br /&gt;&lt;input type=&quot;image&quot; src=&quot;https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif&quot; border=&quot;0&quot; name=&quot;submit&quot; alt=&quot;PayPal - The safer, easier way to pay online!&quot;&gt;&lt;br /&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://www.paypal.com/en_US/i/scr/pixel.gif&quot; width=&quot;1&quot; height=&quot;1&quot;&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;EDIT: Apparently on some iPhones, the installation of openiboot appears to be failing (THIS MEANS IT WON&#39;T BOOT UP AGAIN). This is being investigated (I can&#39;t reproduce it on my own phone), but meanwhile you can just do a &quot;tethered boot&quot;. In openiboot console, don&#39;t install but do !zImage, kernel, !android.img.gz, ramdisk, boot &quot;console=tty root=/dev/ram0 init=/init rw&quot; (after installing the other images to the second partition). If your phone won&#39;t boot up again, a DFU restore will get it back to normal. Take a deep breath. Calm down. There&#39;s nothing to worry about. :) We&#39;ll get this sorted out by tomorrow.&lt;br /&gt;&lt;br /&gt;EDIT2: Fixed! It was previously only working on phones that used PwnageTool due to some assumption I made. Thanks geohot! Redownload the archive or just &lt;a href=&quot;http://graphite.sandslott.org:4080/pub/idroid/openiboot.img3&quot;&gt;openiboot.img3&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/3403861899194575680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/3403861899194575680'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/04/ive-been-working-on-this-quietly-in.html' title='Android running on iPhone!'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-1355438504493000625</id><published>2010-03-20T22:09:00.000-07:00</published><updated>2010-03-20T22:13:38.772-07:00</updated><title type='text'>Porting Guide</title><content type='html'>&lt;span style=&quot;font-family:georgia;&quot;&gt;Something helpful for those who are interested (but don&#39;t know where to start) in the &quot;porting openiboot to other devices&quot; task under &quot;Jobs for Reverse Engineers&quot;.....&lt;br /&gt;&lt;br /&gt;Base addresses, GPIO ports, i2c slave addresses, interrupt numbers, clock gates, etc. will all be available from ioreg -l on your jailbroken device. Check your ioreg -l output with the ioreg -l / device tree outputs of already ported platforms to see quickly which drivers are likely to be compatible with merely some constants changed, and which will need to be rewritten.&lt;br /&gt;&lt;br /&gt;If you have an iPhone uart cable, you can port the uart driver early… it’s very simple. This will save you a lot of pain debugging.&lt;br /&gt;&lt;br /&gt;Step 1. Figure out how to reboot the device. This is usually done by writing a value into a WDT register, but could be verified by reversing cmd_reboot in iBoot.&lt;br /&gt;&lt;br /&gt;Step 2. Change the “Constants” in includes/hardware/s5l8900.h to reflect the basic memory layout of your hardware if necessary. Most likely this does not need to be changed provided the MIU was properly configured before openiboot is called.&lt;br /&gt;&lt;br /&gt;Step 3. Make sure PeripheralPort in includes/hardware/s5l8900.h is set to the right place. You can find out by reversing iBoot and finding where it sets the peripheral port remap register early on.&lt;br /&gt;&lt;br /&gt;Step 4. Figure out where the MIU configuration register is and which MIU setting to use to make sure SDRAM is mapped to 0×0. This can also be most likely found in iBoot. The MIU is one of the devices labeled /arm-io/clkrstgen in the iPhone’s device tree. Change the instructions at the beginning of entry.S, miu_setup, and clock_set_bottom_bits_38100000 with this new information. You may attempt to make the assumption that the MIU is still at the same place and/or has the same register offsets/values.&lt;br /&gt;&lt;br /&gt;Step 5. Put a reboot early on in entry.S and progressively move it back, troubleshooting as you go, until you reach C code (OpenIBootStart). This is the first major landmark.&lt;br /&gt;&lt;br /&gt;Step 6. Port over clock.c, power.c, timer.c, interrupt.c and the interrupt handling code in entry.S. Most likely you just need to change the base addresses in their respective includes/hardware/*.h. Use the event.c code (which is platform independent) to try to schedule a reboot 10 seconds after you launch openiboot. (make sure you comment out everything you haven’t ported and add a while(1); at the end of your code). If this works, the timer, clock and interrupts all work. These are very important basic services for the other drivers. Use a combination of the reboot code you worked out in step 1 and while(1)s to troubleshoot, they will be your only form of feedback for now.&lt;br /&gt;&lt;br /&gt;Step 7. Port over usb.c. Again, you can probably just change the base address of the USB code and it will work. Once that is done, you can re-enable all the command line parsing code. If the openiboot command line code works, then you have a basic bring-up!&lt;br /&gt;&lt;br /&gt;Step 8. Port over the GPIO driver. You can test its workings by checking the button states. You need this for a whole bunch of devices.&lt;br /&gt;&lt;br /&gt;Step 9. Port over the i2c driver. Test with the accelerometer. This is needed for the PMU and LCD among other things.&lt;br /&gt;&lt;br /&gt;Step 10. Port over the pmu driver. This is a good application of the i2c driver, and you need it to control the backlight.&lt;br /&gt;&lt;br /&gt;Step 11. Port over the SPI driver. Most notably, this is used for the LCD driver and probably NOR on new ports. No easy way to test this in isolation so you’ll want to do it concurrently with step 13.&lt;br /&gt;&lt;br /&gt;Step 13. Port over the NOR driver. It might “just work” when the SPI driver does.&lt;br /&gt;&lt;br /&gt;Step 14. Port over the LCD driver. This is probably one of the trickier parts. I had to check the actual iBoot disassembly for my ports here. However, it only took an hour or so to get working.&lt;br /&gt;&lt;br /&gt;Step 15. Port over the DMA controller. There probably won’t be any changes, but who knows.&lt;br /&gt;&lt;br /&gt;Step 16. Port the rest. There aren’t any surprise dependencies. sdio → wan, radio → uart and that’s about it.&lt;br /&gt;&lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/1355438504493000625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/1355438504493000625'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/03/porting-guide_9831.html' title='Porting Guide'/><author><name>CPICH</name><uri>http://www.blogger.com/profile/07912056455402609087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-674803538718816895</id><published>2010-03-04T00:45:00.001-08:00</published><updated>2010-03-04T01:10:13.974-08:00</updated><title type='text'>iPhonelinux Wishlist</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  ;font-family:&#39;Times New Roman&#39;;font-size:medium;&quot;&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; white-space: normal;  font-family:&#39;Times New Roman&#39;;font-size:medium;&quot;&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Planetbeing&#39;s words from the iphonelinux github:&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&quot;This is just my personal WISHLIST. You might have different priorities. If you want to help, just submit patches that you think are helpful. If you need ideas, just refer to this list. Take it off the list in your patch when you finish something off the list. I&#39;ll try to give as much help and guidance as I have time to (which may not be much).&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; white-space: normal;  font-family:&#39;Times New Roman&#39;;font-size:medium;&quot;&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;This is not an exhaustive list, but just stuff I think people can actually deliver on reasonable timescales. For example, notice the conspicuous absence of &quot;figure out how to make phone calls&quot;. It&#39;s roughly divided based on skillset.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#996633;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;Jobs for C coders that may not have much RE or driver experience:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;1. Simplify driver code: An early goal of this project is to remain faithful to how the iPhone firmware operates the hardware. Some of it does not actually make sense or is otherwise not very efficient. We have a better understanding of the hardware now and can afford to write better drivers with that understanding. This is essentially refactoring.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;2. Refactor openiboot: I&#39;m not sure I like the way openiboot is laid out right now. There&#39;s got to be a neater way to organize this. I&#39;d like something that has less messy defines and a more consistent style so it&#39;s easier to read, perhaps individual folders for each module, and the ability to easily include or not include any individual module. An emphasis should be put on ease of porting. &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;3. Add multitasking: A great project for students in or just out of OS classes. I&#39;ve been too lazy to add true multithreading primitives: mutexes, semaphores, condition variables, and also multitasking in general. A lot of stuff is run in interrupt contexes or interrupt-disabled contexes. Writing drivers requiring blocking I/O is a pain. It&#39;s time for a true multitasking kernel. Should be done in coordination with #2.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;4. Write a gdb stub for openiboot: Those things are tiny and it shouldn&#39;t be that bad. Just have it communicate over the existing USB driver now. We wouldn&#39;t be able to debug interrupt contexts for now, but it&#39;s better than nothing.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;5. Someone needs to MAINTAIN the build script for the toolchain. Or else figure out if/how we can just build everything using Apple&#39;s or the community&#39;s iPhone OS toolchain. I&#39;m pretty sure we can. It&#39;s not like we use the elf wrapper currently.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;6. It might be cool to be able to parse the iPhone&#39;s own device tree for some of base addresses. Might make porting less of a pain.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;7. With help from CPICH, we&#39;ve determined the vibrator and speaker controls are in the baseband, both controlled through the at+xdrv command. Knowing this, the next step is to make sure we can talk to the baseband through the UARTs. This shouldn&#39;t be that bad since iBoot used to do it, and we already have UART code.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;8. I&#39;ve implemented the firmware upload part of Libertas WLAN driver for Marvell 8686 to test out the SDIO functionality. It appears to work. Therefore, we have validated readb, writeb and writesb. More of it should be implemented to validate SDIO device interrupt handling and also readsb. After that, we will definitely have enough to support working wi-fi in the Linux kernel!  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#996633;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;Jobs for people who want to get their hands dirty with drivers:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;1. Look at TheSeven&#39;s NAND FTL code in Rockbox and CPICH&#39;s reverse engineering efforts to figure out the FTL write code and get it working.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;2. Write a new USB driver: I hate the current one. TheSeven might have some better code.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;3. Can we steal some code from that userland bluetooth stack and put it on top of our UART code? It might be even cleaner than USB, ironically, since we can probably do it all without interrupts.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#996633;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;Jobs for reverse engineers:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;1. Port openiboot to unsupported platforms like ipt2g, ipt3g and iPhone 3GS.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt; 2. For some reason, the NAND chips stop working after the iPhone is on for a long time. They&#39;re fine after a reboot. Figure out why that&#39;s happening.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;3. Get multitouch working for Zephyr2. It&#39;s a subclass of the Zephyr1 that I investigated, and at least some functions are shared, so it shouldn&#39;t be terrible.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;4. Figure out how to talk to the light sensor. It&#39;s a TSL2561 according to the ioreg. The slave address is 0x92/0x93 according to the ioreg &quot;reg&quot; setting and is one of the slave addresses allowed on the TSL2561. It&#39;s on i2c0 according to ioreg. It all looks good except for the fact I cannot get a response out of this part. I even bruteforced all the slave addresses on i2c0 and only got responses from the PMU, the accelerometer and the Wolfson, stuff we already know how to talk to. What&#39;s going on? Is it just my 2G is broken?  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;5. Figure out the new FTL they&#39;re using on the newer devices. That&#39;s going to be a pain.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Thanks for reading all this. I&#39;m impressed&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;.&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/674803538718816895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/674803538718816895'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2010/03/test_04.html' title='iPhonelinux Wishlist'/><author><name>CPICH</name><uri>http://www.blogger.com/profile/07912056455402609087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-1545007850865914895</id><published>2009-03-04T13:32:00.000-08:00</published><updated>2009-03-04T13:33:10.773-08:00</updated><title type='text'>QuickOIB</title><content type='html'>Hey, I would just like to tell you about a project pH is working on called &lt;a href=&quot;http://www.quickoib.com/&quot;&gt;QuickOIB&lt;/a&gt;. It is an installer for openiboot that works on Mac OS and Linux. He also tells me that he is working on a Windows version.&lt;br /&gt;&lt;br /&gt;I&#39;m sure it&#39;ll be very useful to people wanting a quick way to get past the OpeniBoot stage and get directly to working with the Linux environment.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/1545007850865914895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/1545007850865914895'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2009/03/quickoib_04.html' title='QuickOIB'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-7633675513707407448</id><published>2009-02-27T22:39:00.001-08:00</published><updated>2009-02-27T22:39:56.884-08:00</updated><title type='text'>Still Alive</title><content type='html'>Been busy lately, but we&#39;ll be back at it soon. Stay tuned for updates!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/7633675513707407448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/7633675513707407448'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2009/02/still-alive.html' title='Still Alive'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-391920290957049998</id><published>2008-12-14T23:24:00.000-08:00</published><updated>2008-12-15T00:25:17.250-08:00</updated><title type='text'>Debian on iPhone Linux</title><content type='html'>NAND writing is now semi-reliable (although one has to be VERY careful not to interrupt the device in the middle of a write operation), but it is enough to have something akin to a full-functional OS, backed by non-volatile storage.&lt;br /&gt;&lt;br /&gt;People interested in the project should be familiar with the myriads of Linux &quot;distributions&quot; floating around. An operating system consists of two major domains: one is the kernel, which is what manages the hardware, and one is the userland which contains things like shells and other UIs, package managers, etc. Software that help users install and run useful programs. Ubuntu is a popular distribution that I run on my personal machine. Android could also be considered a distribution (though I believe it has some &lt;a href=&quot;http://mjg59.livejournal.com/100221.html&quot;&gt;apparently messy&lt;/a&gt; kernel patches).&lt;br /&gt;&lt;br /&gt;I decided that Debian would be an interesting thing to try, since we would then instantly have a userland and a pool of ready-compiled applications. Using a slightly dated root filesystem here: &lt;a href=&quot;http://lists.debian.org/debian-arm/2007/01/msg00034.html&quot;&gt;http://lists.debian.org/debian-arm/2007/01/msg00034.html&lt;/a&gt;, a initrd and further kernel configurations were sufficient to get it to run. Thus, we can now &lt;span style=&quot;font-weight: bold;&quot;&gt;compile programs&lt;/span&gt; for iPhone Linux &lt;span style=&quot;font-weight: bold;&quot;&gt;on&lt;/span&gt; iPhone Linux. The process is rather slow due to the processor and inefficient NAND device driver (pending a real FTL), but at least theoretically, iPhone Linux is now &lt;a href=&quot;http://en.wikipedia.org/wiki/Self-hosting&quot;&gt;self-hosting&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This should be pretty much enough for those who are more into the userland development side of things to come in, possibly using Debian as a base to build anything else (as I believe it is standard enough).&lt;br /&gt;&lt;br /&gt;I will be offering instructions on how to get this all to work soon. The (modified for gadget serial terminal) rootfs is fairly hefty (around 130 MB), so I&#39;m not sure how we&#39;ll handle distribution of that.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/391920290957049998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/391920290957049998'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/12/debian-on-iphone-linux.html' title='Debian on iPhone Linux'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-307715285226543512</id><published>2008-12-06T01:27:00.000-08:00</published><updated>2008-12-06T01:41:55.311-08:00</updated><title type='text'>Porting drivers to Linux</title><content type='html'>We&#39;ve made some progress on the USB gadget driver for Linux, and we&#39;re now running a generic serial gadget for communication. This implementation is important because USB is now a lot less laggy and things like ethernet over USB, etc., can eventually be supported, easing access.&lt;br /&gt;&lt;br /&gt;We&#39;ve also got pretty far with porting the NAND driver to Linux. Most of the read support is now there, and we&#39;ve isolated the routines in the iPhone kernel where the raw hardware write occurs. CPICH and c1de0x are working on reversing it. Hopefully, it will be analogous enough to reads that it won&#39;t take a huge amount of time to work out.&lt;br /&gt;&lt;br /&gt;This is different from reversing their FTL, however, which is a complicated slew of data structures, merge buffers and other exotic algorithms that take care of evenly distributing writes throughout the device and also making writes take less time.&lt;br /&gt;&lt;br /&gt;I think reversing all of that would take too much time and effort. Instead, my proposal is to just reverse the hardware NAND writes. Instead of using a partition, we would have a loop-mounted root filesystem (similar to how Wubi is setup), with the root filesystem being a file on the Media partition. Since there&#39;s a non-empty file at that location, the FTL system, whatever it is, must create a one-to-one mapping from logical sectors to physical NAND pages. We can already read the mapping it creates (we have already reversed the read-side FTL code), and so all we have to do to alter the data is to write to the same pages we would&#39;ve read from. Of course, this means that wear-leveling and bad block handling is not performed. However, if we use a filesystem that&#39;s aware of bad blocks and can wear-level (YAFFS or JFFS2), then it amounts to the same thing. The wear-leveling would then take place over the particular physical pages belonging to the rootfs image, rather than the entirety of the NAND. This would make the physical pages belonging to the rootfs image wear out a little faster than the rest of the NAND, but the actual effect of this should be inconsequential.&lt;br /&gt;&lt;br /&gt;The additional benefit of this setup is that there&#39;s no repartitioning required, so setup is cinch. See &lt;a href=&quot;http://www.iphonelinux.org/index.php/IPhone_Linux_Boot_Sequence&quot;&gt;this wiki document&lt;/a&gt; for specific proposed implementation details.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/307715285226543512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/307715285226543512'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/12/porting-drivers-to-linux.html' title='Porting drivers to Linux'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-6190582165515484359</id><published>2008-11-30T23:45:00.001-08:00</published><updated>2008-12-01T00:18:27.627-08:00</updated><title type='text'>Donations...</title><content type='html'>A couple of people asked for a donate button of some sort. I hesitate because of the sudden complexity of things when money is involved. Here is what I think would be best:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Donate your time and skills if you can rather than money.&lt;/li&gt;&lt;li&gt;If you cannot do so, please consider sponsoring something we could directly use: Such as a USB  serial cable (about $45 for parts from &lt;a href=&quot;http://www.sparkfun.com/&quot;&gt;Sparkfun&lt;/a&gt;), or perhaps upgrading the &lt;a href=&quot;http://www.slicehost.com&quot;&gt;Slicehost&lt;/a&gt; slice we&#39;re borrowing from pumpkin ($60 per month, though it would only be useful if we could get enough money for at least six months), used or broken devices for testing, etc. Or something like a pizza for one of our contributors on a late night hacking binge (we will distribute food donations on a round-robin basis =P)&lt;/li&gt;&lt;li&gt;My paypal address is my gmail e-mail address (planetbeing). If you do make a donation, &lt;span style=&quot;font-weight: bold;&quot;&gt;please specify exactly what it is for&lt;/span&gt;. A gigantic slush fund is something that I wish to avoid.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;For the record, contrary to what was published by some media sources, the iphonelinux group is not associated with the group commonly known as the &quot;iPhone Dev Team&quot;. I&#39;m a member of the Dev Team, and other members sometimes lends assistance or advice, but this is an entirely separate project. The Dev Team does not accept any donations whereas this project tentatively will.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/6190582165515484359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/6190582165515484359'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/11/donations.html' title='Donations...'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-5421264975477413481</id><published>2008-11-29T19:31:00.000-08:00</published><updated>2008-11-29T19:34:07.331-08:00</updated><title type='text'>Updating and uninstalling openiboot</title><content type='html'>It&#39;s actually slightly problematic to use the &quot;Update Firmware&quot; feature of iTunes with openiboot installed, so I updated openiboot with an uninstall facility.&lt;br /&gt;&lt;br /&gt;I uploaded the binaries and instructions necessary to update openiboot (and then uninstall it if you wish) to: http://www.iphone-dev.org/planetbeing/openiboot-uninstall.tar.gz</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/5421264975477413481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/5421264975477413481'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/11/updating-and-uninstalling-openiboot.html' title='Updating and uninstalling openiboot'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-7047974696545613782</id><published>2008-11-28T14:50:00.000-08:00</published><updated>2008-12-01T00:16:26.208-08:00</updated><title type='text'>Linux on the iPhone!</title><content type='html'>I&#39;m pleased to announce that the Linux 2.6 kernel has been ported to Apple&#39;s iPhone platform, with support for the first and second generation iPhones as well as the first generation iPod touch. This is a rough first draft of the port, and many drivers are still missing, but it&#39;s enough that a real alternative operating system is running on the iPhone.&lt;br /&gt;&lt;br /&gt;&lt;iframe src=&quot;http://www.iphone-dev.org/planetbeing/diggbutton.html&quot; width=&quot;100&quot; frameborder=&quot;0&quot; height=&quot;115&quot;&gt;&amp;amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;What we have:&lt;br /&gt;&lt;br /&gt;- Framebuffer driver&lt;br /&gt;- Serial driver&lt;br /&gt;- Serial over USB driver&lt;br /&gt;- Interrupts, MMU, clock, etc.&lt;br /&gt;&lt;br /&gt;What we have in openiboot (but hasn&#39;t been ported yet):&lt;br /&gt;&lt;br /&gt;- Read-only support for the NAND&lt;br /&gt;&lt;br /&gt;What we don&#39;t have (yet!):&lt;br /&gt;&lt;br /&gt;- Write support for the NAND&lt;br /&gt;- Wireless networking&lt;br /&gt;- Touchscreen&lt;br /&gt;- Sound&lt;br /&gt;- Accelerometer&lt;br /&gt;- Baseband support&lt;br /&gt;&lt;br /&gt;The current userland we&#39;re using, in the interest of expedience, is a Busybox installation created with buildroot, but glibc works fine as well, and we&#39;re going to build a more permanent userland solution.&lt;br /&gt;&lt;br /&gt;A demonstration video can be seen here: &lt;a href=&quot;http://www.vimeo.com/2373142&quot;&gt;http://www.vimeo.com/2373142&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Instructions here: &lt;a href=&quot;http://www.iphone-dev.org/planetbeing/LINUX-README.txt&quot;&gt;http://www.iphone-dev.org/planetbeing/LINUX-README.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Download here: &lt;a href=&quot;http://91.186.26.18/iphone/files/iphonelinux-demo.tar.gz&quot;&gt;http://91.186.26.18/iphone/files/iphonelinux-demo.tar.gz&lt;/a&gt; (look for mirrors in the comments)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;EDIT: The instructions are missing the step that you have to select openiboot console from the menu before performing the &quot;sudo ./oibc&quot; step. Just be aware you have to do that if it seems like you&#39;re not getting a response from the oibc client&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Project lead: planetbeing&lt;br /&gt;&lt;br /&gt;Contributors: CPICH, cmw, poorlad, ius, saurik&lt;br /&gt;&lt;br /&gt;If you&#39;re experienced with hacking/porting Linux and especially if you&#39;re experienced with porting Android, I&#39;d definitely like to hear from you. Come chill in the #iphonelinux channel on irc.osx86.hu. Thanks. :)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;EDIT: I was asked a couple times by people who wanted to donate (financially) to the project. I made a &lt;a href=&quot;http://linuxoniphone.blogspot.com/2008/11/donations.html&quot;&gt;post discussing this possibility&lt;/a&gt;, if you are interested.&lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/7047974696545613782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/7047974696545613782'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/11/linux-on-iphone.html' title='Linux on the iPhone!'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-1981693533602893487</id><published>2008-11-18T08:40:00.000-08:00</published><updated>2008-11-18T09:18:50.708-08:00</updated><title type='text'>Poorlad&#39;s menu implemented; Porting issues resolved</title><content type='html'>Yesterday night, I merged in a branch I was working on for poorlad&#39;s menu. A version of that beautiful menu is now in Git. His menu included a version string at the bottom. We didn&#39;t have any way to keep track of versions and builds before, so this was actually a good idea that I had to implement. Because I didn&#39;t want to implement support for non-fixed width fonts, or add another space-consuming font, I just used the console font I was already using for that part. I also had to brighten the gradient on the bottom of the screen, since it was basically invisible due to gamma issues otherwise.&lt;br /&gt;&lt;br /&gt;The border between the gradient and the &quot;black&quot; is clearly visible on my device. This is probably because of a gamma issue. When poorlad comes back, we can ask him to calibrate it more.&lt;br /&gt;&lt;br /&gt;Otherwise, it looks pretty good! In order to make this possible, I added in stb_images.c, a great tiny little image library that can read PNG, JPEGs and even PSD files and does zlib decompression as an added bonus. This will be a great help if we decide to change things or need to add more stuff that consumes a lot of space. I also added in a basic function to perform alpha blending (albeit comparatively slowly).&lt;br /&gt;&lt;br /&gt;Sadly, while I was busy making these changes, ius from IRC actually begun to implement poorlad&#39;s menu without me knowing about it, so we ened up duplicating each other&#39;s efforts. He was able to compile in zlib and libpng, but the cost was to inflate the final binary to 347 KB. Whereas taking out the old menu images, and adding small, compressed PNGs and the stb_images library instead actually made openiboot smaller than it was before! His decision to preblend the images, rather than attempt alpha blending on the device, was probably more optimal from a performance perspective.&lt;br /&gt;&lt;br /&gt;Steven Troughton-Smith told me on Twitter that he has actually implemented his own boot menu as well. I&#39;m not sure if he used the new PNG code or not, but the new code makes it pretty easy for a competent programmer to add in whatever menu they would like. I&#39;d tell everyone to skin away, but we should keep as few wild branches of this project as possible, since everyone randomly installing openiboot just for kicks (especially a modified version) and then coming to us (read: me, ultimately) for support is something we don&#39;t have the resources to handle at this moment.&lt;br /&gt;&lt;br /&gt;On the porting side, the issues with installation, optimizing NOR access on iPhone 3G, NAND access on a few devices all seem to have been fixed, so we can basically scratch the first two items off of the list I put up in the last post. I&#39;m pleasantly surprised at how relatively easy it was.&lt;br /&gt;&lt;br /&gt;Anyway, now for the kernel. Well, if I don&#39;t get distracted by writing to NAND.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/1981693533602893487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/1981693533602893487'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/11/yesterday-night-i-merged-in-branch-i.html' title='Poorlad&#39;s menu implemented; Porting issues resolved'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-5970345998308916074</id><published>2008-11-16T12:16:00.001-08:00</published><updated>2008-11-16T12:26:44.427-08:00</updated><title type='text'>Porting to iPhone 3G and iPod touch</title><content type='html'>Hey guys,&lt;br /&gt;&lt;br /&gt;The lack of updates for the past few days is because many of you decided to visit us in IRC, thus enabling work to be done on porting openiboot to the iPod touch and the iPhone 3G (in particular because I don&#39;t have an iPod touch at the moment).&lt;br /&gt;&lt;br /&gt;I&#39;m pleased to report that everything now seems to be working on the iPhone 2G and the iPhone 3G (albeit NOR read/write on the iPhone 3G is unoptimized and is unacceptably slow). There is apparently an outstanding issue with the NAND ECC on some (?) iPod touchs, and also some people can&#39;t seem to actually install openiboot to NOR on both iPhone 2G and iPod touch. Unfortunately, the problem is that these things happen on devices that I don&#39;t have physical access to, and IRC is often a frustrating medium for communicating with testers. I&#39;m confident these issues will be resolved soon, though.&lt;br /&gt;&lt;br /&gt;So, current simultaneous projects:&lt;br /&gt;&lt;br /&gt;1. Resolve openiboot porting issues&lt;br /&gt;2. Implement poorlad&#39;s boot menu&lt;br /&gt;3. Work on write support for FTL&lt;br /&gt;&lt;br /&gt;After at least one of those things are done, we&#39;ll be working on the Linux kernel.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/5970345998308916074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/5970345998308916074'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/11/porting-to-iphone-3g-and-ipod-touch.html' title='Porting to iPhone 3G and iPod touch'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-8939880989583527956</id><published>2008-11-12T18:31:00.000-08:00</published><updated>2008-11-12T18:43:26.797-08:00</updated><title type='text'>NAND filesystem now readable!</title><content type='html'>Amazingly enough, the FTL_Read stuff from last night was pretty much correct! After that, it was relatively trivial to port over the HFS+ code I&#39;ve already written (which was in pure C... finally that [fail] design decision has been vindicated =P).&lt;br /&gt;&lt;br /&gt;As you can see in the screenshot below, with the latest Git revision, you can browse the filesystem from openiboot!&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihq9IGpx3j14od062NSEz_sB05YRg6Uxmke-wgrF1V1ajopxHtI3qVuIhxfJdF51ixfd-EMSfiSKqW4FLsKg2awzPaVavp5ZFr_YKk7Ie4vMLBLKSiRCsC5FDaZhCtelzLscFfCew8Ojc2/s1600-h/FS+works.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 363px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihq9IGpx3j14od062NSEz_sB05YRg6Uxmke-wgrF1V1ajopxHtI3qVuIhxfJdF51ixfd-EMSfiSKqW4FLsKg2awzPaVavp5ZFr_YKk7Ie4vMLBLKSiRCsC5FDaZhCtelzLscFfCew8Ojc2/s400/FS+works.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5267965558126276450&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Next on the list is to port openiboot over to the iPod touch and iPhone 3G. It&#39;s probably just a matter of putting in different numbers for the GPIO ports, but we&#39;ll see.&lt;br /&gt;&lt;br /&gt;After that, I will implement poorlad&#39;s bootmenu (which everyone seems to like).&lt;br /&gt;&lt;br /&gt;After that, well... We have pretty much all the devices now, so we&#39;ll start looking at the Linux kernel. If you&#39;re a Linux kernel guy who would be willing to help (preferrably you have experience porting Linux to new ARM platforms), please leave a comment here. I can do most of the muscle work, but it&#39;d be nice if someone can show me how to set up the source tree properly for the new port.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/8939880989583527956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/8939880989583527956'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/11/nand-filesystem-now-readable.html' title='NAND filesystem now readable!'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihq9IGpx3j14od062NSEz_sB05YRg6Uxmke-wgrF1V1ajopxHtI3qVuIhxfJdF51ixfd-EMSfiSKqW4FLsKg2awzPaVavp5ZFr_YKk7Ie4vMLBLKSiRCsC5FDaZhCtelzLscFfCew8Ojc2/s72-c/FS+works.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8396741493310463586.post-8458960893158604270</id><published>2008-11-11T04:43:00.001-08:00</published><updated>2008-11-11T05:05:01.752-08:00</updated><title type='text'>FTL</title><content type='html'>I don&#39;t know how I was talked into reversing a FTL, but we&#39;re actually on our way. I&#39;ve managed to enlist the aid of CPICH (who has been helping with the lower layers as well, he&#39;s our human HexRays) and just recently, pumpkin, who you will know from the Dev Team. pumpkin will be the heavy support that&#39;s necessary to take down _FTLRestore, which is the most complex function I&#39;ve seen in 1.1.4 iBoot (and I&#39;ve pretty much have seen all of it). pumpkin is very good, so this task should be now be cut down to &quot;fairly difficult&quot; from &quot;completely impossible&quot;.&lt;br /&gt;&lt;br /&gt;The strategy so far has been me methodically hacking through the functions in the order that they are called, completely decompiling them, understanding them, and assimilating them into openiboot. Toward this end, I&#39;ve been working on FTL_Open, which is a fairly large (but as it turns out, boring) function, but has been useful in enlightening us on several of the large data structures FTL uses.&lt;br /&gt;&lt;br /&gt;Meanwhile, CPICH works on functions ahead of me, so that when I reach them, a lot of the thorny underbrush has been cleared out and my job becomes much easier and faster. Toward this end, he has been working on FTL_Read, which uses the data structures that the now-completed FTL_Open should populate.&lt;br /&gt;&lt;br /&gt;_FTLRestore is sort of a &quot;bonus&quot;, since it&#39;s not normally called if the iPhone was shut down normally and everything is cleaned up. However, since recovering faulty data structures require all redundancies to be exploited, reversing this would let us gain a lot of insight into how the FTL works. It&#39;s also, naturally, an enormously complex function, and hence I wisely delegated it to pumpkin. =P (We will probably end up working on it together)&lt;br /&gt;&lt;br /&gt;The one thing that troubled me was that the code we were reversing is for 1.1.4 whereas we primarily need it to work on 2.0. However, due to the fact that I had it better mapped out than the 2.0 iBoot, and the fact that the equivalent 2.0 code was much more complex (lots of function pointers flying around, and a weird switch idiom I haven&#39;t quite figured out yet), We decided to stick to the 1.1.4 iBoot.&lt;br /&gt;&lt;br /&gt;After completing FTL_Open, I had a bit of a panic when I discovered it did not work at all on my 2.1 phone, and I could not find any obvious bugs with it. This might&#39;ve meant that all our work on 1.1.4&#39;s FTL was for naught. Forgoing sleep, I tore through the 2.1 iBoot, locating the analogues to my already reversed 1.1.4 functions (I had given up trying to trace through the function pointers the first time around), and called them directly with my special version of iBoot (patched so that one of the commands was able to call arbitrary iBoot functions with arbitrary arguments). I managed to find a couple of bugs with my VFL code, and after having fixed them, FTL_Open appears to have worked. I think. It just finds and reads several data structures from NAND. It remains to be seen if I&#39;m even reading the right thing.&lt;br /&gt;&lt;br /&gt;Now for some sleep.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/8458960893158604270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8396741493310463586/posts/default/8458960893158604270'/><link rel='alternate' type='text/html' href='http://linuxoniphone.blogspot.com/2008/11/ftl.html' title='FTL'/><author><name>planetbeing</name><uri>http://www.blogger.com/profile/02677092871921550202</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>