<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Computer Solutions Blog &#187; ophone</title>
	<atom:link href="http://www.computersolutions.cn/blog/tag/ophone/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.computersolutions.cn/blog</link>
	<description>Whats happening at Computer Solutions</description>
	<lastBuildDate>Fri, 13 Jan 2012 02:32:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Dell Mini 3i (possibly also Dell Aero too) Firmware Exploration</title>
		<link>http://www.computersolutions.cn/blog/2010/08/dell-mini-3i-firmware-exploration/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dell-mini-3i-firmware-exploration</link>
		<comments>http://www.computersolutions.cn/blog/2010/08/dell-mini-3i-firmware-exploration/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 18:20:34 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[Firmware]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[borqs]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[marvell]]></category>
		<category><![CDATA[mini 3i]]></category>
		<category><![CDATA[mini3i]]></category>
		<category><![CDATA[ophone]]></category>
		<category><![CDATA[pxa935]]></category>
		<category><![CDATA[tavor]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=593</guid>
		<description><![CDATA[As I&#8217;ve been reasonably successful in the past at figuring out file systems from flat files, I thought I&#8217;d have a go at the Dell Mini 3i 1.5 Firmware that surfaced at damipan (http://www.namipan.com/d/DELL_MINI3I_OMS1.5.rar/a5ba3b06ab0bfc9baeb2f09b44f54aa40bac3457ee8ebc04) The rar file unzips to a MFF file. This I&#8217;m probably guessing is probably named after Marvell File Format or Marvell [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve been reasonably successful in the past at figuring out file systems from flat files, I thought I&#8217;d have a go at the Dell Mini 3i 1.5 Firmware that surfaced at damipan (<a href="http://www.namipan.com/d/DELL_MINI3I_OMS1.5.rar/a5ba3b06ab0bfc9baeb2f09b44f54aa40bac3457ee8ebc04">http://www.namipan.com/d/DELL_MINI3I_OMS1.5.rar/a5ba3b06ab0bfc9baeb2f09b44f54aa40bac3457ee8ebc04</a>)</p>
<p>The rar file unzips to a MFF file.</p>
<p>This I&#8217;m probably guessing is probably named after Marvell File Format or Marvell Flasher File.<br />
Here&#8217;s my initial work on the file system of MFF format, based on  DELL_Mini3i_OMS1.5.mff</p>
<p><strong>Initial 80 bytes [0x0 - 0x080] (MFF HEADER)</strong></p>
<p>0&#215;00 &#8211;  0&#215;03 :  3 Bytes Header MFF<br />
0&#215;03 &#8211; 0&#215;07 : Still to figure out, probably file length  or crc.<br />
Have to grab another firmware file to check though..</p>
<p>0&#215;08 : Number of files?  9 listed, so quite probably&#8230;<br />
Rest of header padded out with zero&#8217;s to end of 80 bytes.</p>
<p><strong>[0x80 - 0x180]  File Allocation Table</strong><br />
0&#215;80 &#8211; our first file.  Looks like 0&#215;100 / 256 bytes per file listed, padded with 0&#215;0&#8242;s</p>
<p>File listing looks like this:</p>
<p>File header (for each file)<br />
8 bytes, then filename, padded with 0&#8242;s to fill 256 bytes length</p>
<p>First 4 bytes &#8211; offset in MFF of start of file.<br />
Second 4 bytes &#8211; length of file.</p>
<p>Remaining files repeat from next 256 byte intervals.</p>
<p>eg<br />
0&#215;180 &#8211; 0&#215;280<br />
0&#215;280 &#8211; 0&#215;380<br />
&#8230;</p>
<p><strong>[0x80 + 9 files x 0x100 bytes = 0x980]  Start of Data.</strong></p>
<p>How did I work this out?</p>
<p>HEADER                            | Filename (not in hex below as easier to read)<br />
80 09 00 00 34 BB 00 00  | Tavor Flasher_Samsung_ONENAND_h.bin</p>
<p>0&#215;0980 is the start of our first file data, so the first 2 bytes are definitely File Start.<br />
0xBB34 looks quite possibly like File Length.</p>
<p>We can check this easily with one of the plain text files.</p>
<p>Flash_Protection_table.ini is prefixed with 63 EA AD 09   4B 00 00 00</p>
<p>So it should start at  0&#215;09 AD &#8211; hmm, readable text starts at offset 9AD D564.<br />
Not quite right.  Start offset looks close though.</p>
<p>Lets look at another one.</p>
<p>Tavor_saar_onenand.ini &#8211; prefix says<br />
64 d5 ad 09 6f 01 00 00</p>
<p>Ah, 0&#215;9 AD D5 64 is actually our Tavor_saar_onenand.ini content.  Cool, a match.  So, the first 4 bytes are definitely our location pointer.</p>
<p>Lets look at the Flash protection table again Flash_Protection_table.ini</p>
<p>63 EA AD 09   |  4B 00 00 00<br />
Should start at 09 AD EA 63, and go for 4B length.  Bingo, it does <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Our file contents for that area are:</p>
<p>[PROTECTED_REGION_0]<br />
Block_Offset=0&#215;100000<br />
Length=0&#215;20000<br />
Mode=SKIP_BLOCKS</p>
<p>So, now we can start to split the files apart into their associated parts.</p>
<p>factory_BENZ2GWIFI.fbf is probably going to be the most interesting, as its the largest.</p>
<p>That starts at 0xC564, length of 0x09AD1000 and starts with &#8220;Marvell_FBF&#8221;<br />
Basic math says that 0x9ADD564 (0x09AD1000 + 0xC564) should be our end of file.<br />
Well, it is, as we know flash protection table.ini starts at 9add564.</p>
<p>So, should be fairly easy with that info to write an unpacker tool to rip out the first interior files from the MFF file format.<br />
Some of the files inside are also &#8220;packed&#8221;, but those appear to be fairly easy to rip apart also <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I&#8217;m guessing with a bit more work I&#8217;ll be able to replace parts of the firmware with different versions quite soonish.</p>
<p>The file I&#8217;m using off of namipan has the following files inside:</p>
<blockquote><p>TavorFlasher_SAMSUNG_ONENAND_h.bin<br />
TavorFlasher_SAMSUNG_ONENAND_TIM.bin<br />
factory_BENZ2GWIFI.fbf<br />
Tavor_SAAR_OneNAND.ini<br />
factory_BENZ2GWIFI.mff.mlt<br />
magic_fbf.ini<br />
magic_fbf_inner.ini<br />
NTIM_fbw.ini<br />
Flash_Protection_Table.ini</p></blockquote>
<p>I&#8217;m guessing that our fbf file will probably be able to be split into parts as per our ntim_fbw.ini data.<br />
FBF = Flash Binary Format?</p>
<p>some interesting files listed<br />
ntim.bin &#8211; non trusted image module?<br />
blob_full.bin &#8211; from the borq&#8217;s blob gz?<br />
Tavor_M05_Poleg_AI_B0_Flash.bin &#8211; tavor = our product chip, as we&#8217;re running on a Marvel PXA935 (aka Tavor-P65)</p>
<p>Interesting thing of note &#8211; our OEM UniqueID: 0xF00F00 in Unicode is what glyph?<br />
Hint &#8211; its not an orange, or a pear <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>NTIM_fbw.ini</strong></p>
<blockquote><p>Version: 0&#215;030102<br />
Trusted: 0</p>
<p>Issue Date: 0&#215;08142006<br />
OEM UniqueID: 0xf00f00<br />
Boot Flash Signature: 0x4e414e02<br />
Number of Images: 10<br />
Size of Reserved in bytes: 0&#215;40</p>
<p>Image ID: 0x54494D48<br />
Next Image ID: 0x4F424D49<br />
Flash Entry Address: 0&#215;0<br />
Load Address: 0x5c008000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: NTIM.bin</p>
<p>Image ID: 0x4F424D49<br />
Next Image ID: 0x4F534C4F<br />
Flash Entry Address: 0&#215;20000<br />
Load Address: 0x5c013000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: obm_full.bin</p>
<p>Image ID: 0x4F534C4F<br />
Next Image ID: 0x5349474E<br />
Flash Entry Address: 0&#215;80000<br />
Load Address: 0&#215;83000000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: blob_full.bin</p>
<p>Image ID: 0x5349474E<br />
Next Image ID: 0x494D4549<br />
Flash Entry Address: 0&#215;00120000<br />
Load Address: 0&#215;84000000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: signature_full.bin</p>
<p>Image ID: 0x494D4549<br />
Next Image ID: 0x4152424C<br />
Flash Entry Address: 0&#215;00100000<br />
Load Address: 0xBFEE0000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: reliable_full.bin</p>
<p>Image ID: 0x4152424C<br />
Next Image ID: 0&#215;47524249<br />
Flash Entry Address: 0&#215;00140000<br />
Load Address: 0xBF600000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: arbel_full.bin</p>
<p>Image ID: 0&#215;47524249<br />
Next Image ID: 0x62746C67<br />
Flash Entry Address: 0&#215;00840000<br />
Load Address: 0xBFF00000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: tavor_full.bin</p>
<p>Image ID: 0x62746C67<br />
Next Image ID: 0x70636C67<br />
Flash Entry Address: 0x00A00000<br />
Load Address: 0xBF300000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: bootlogo_full.bin</p>
<p>Image ID: 0x70636C67<br />
Next Image ID: 0x464F5441<br />
Flash Entry Address: 0x00A20000<br />
Load Address: 0x8F300000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: prechangelogo_full.bin</p>
<p>Image ID: 0x464F5441<br />
Next Image ID: 0xFFFFFFFF<br />
Flash Entry Address: 0x0EA40000<br />
Load Address: 0&#215;80100000<br />
Image Size To CRC in bytes: 0&#215;0<br />
Image Filename: fota_full.bin</p>
<p>Reserved Data:<br />
0x4F505448<br />
0&#215;00000002<br />
0&#215;55415254<br />
0&#215;00000010<br />
0&#215;00004646<br />
0&#215;00000001<br />
0x50524F49<br />
0&#215;00000020<br />
0&#215;00000002<br />
0&#215;00000000<br />
0&#215;00000000<br />
0&#215;00000000<br />
0&#215;00000001<br />
0&#215;00000000<br />
0x5465726D<br />
0&#215;00000008</p></blockquote>
<p><strong>Flash_Protection_Table.ini</strong></p>
<blockquote><p>[PROTECTED_REGION_0]<br />
Block_Offset=0&#215;100000<br />
Length=0&#215;20000<br />
Mode=SKIP_BLOCKS</p></blockquote>
<p><strong>magic_fbf_inner.ini</strong></p>
<blockquote><p>[INTEL_FLASH_DEVICE_INPUT_FILE]<br />
Number_of_Images=20</p>
<p>[IMAGE_HEADER_0]<br />
Start_Address=0xfa00000<br />
Image_Length=0&#215;80000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_1]<br />
Start_Address=0xdd40000<br />
Image_Length=0&#215;800000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_2]<br />
Start_Address=0xeb40000<br />
Image_Length=0x8c0000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_3]<br />
Filename=NTIM.bin<br />
Start_Address=0&#215;00000000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_4]<br />
Filename=Arbel_NVM_SAC_NOCOMMRTC.bin<br />
Start_Address=0&#215;00140000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_5]<br />
Filename=blob<br />
Start_Address=0&#215;00080000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_6]<br />
Start_Address=0x0bd40000<br />
Image_Length=0&#215;02000000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0<br />
[IMAGE_HEADER_7]<br />
Filename=opl.img.yaffs<br />
Start_Address=0x0bd40000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_8]<br />
Filename=ramdisk_len.img<br />
Start_Address=0x00c40000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_9]<br />
Filename=ramdisk-recovery_len.img<br />
Start_Address=0x00cc0000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_10]<br />
Start_Address=0x00d40000<br />
Image_Length=0&#215;08000000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0<br />
[IMAGE_HEADER_11]<br />
Filename=system.img.yaffs<br />
Start_Address=0x00d40000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_12]<br />
Filename=TAVOR_LINUX_NTOBM.bin<br />
Start_Address=0&#215;00020000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_13]<br />
Filename=Tavor_M05_Poleg_AI_B0_Flash.bin<br />
Start_Address=0&#215;00840000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_14]<br />
Start_Address=0x08d40000<br />
Image_Length=0&#215;03000000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0<br />
[IMAGE_HEADER_15]<br />
Filename=userdata.img.yaffs<br />
Start_Address=0x08d40000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_16]<br />
Filename=zImage<br />
Start_Address=0x00a40000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_17]<br />
Filename=prdcfg.bin<br />
Start_Address=0&#215;00940000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_18]<br />
Filename=precharge_logo.out<br />
Start_Address=0x00a20000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_19]<br />
Filename=logo_pic.gz.out<br />
Start_Address=0x00a00000<br />
EraseBlocks=1<br />
WriteImage=1<br />
VerifyWrite=0</p></blockquote>
<p>Lastly, hi to the people at http://www.allphone.com.cn  <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/08/dell-mini-3i-firmware-exploration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dell Mini 3i / OPhone Hacking thoughts / notes</title>
		<link>http://www.computersolutions.cn/blog/2010/03/dell-mini-3i-ophone-hacking-thoughts-notes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dell-mini-3i-ophone-hacking-thoughts-notes</link>
		<comments>http://www.computersolutions.cn/blog/2010/03/dell-mini-3i-ophone-hacking-thoughts-notes/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 20:48:16 +0000</pubDate>
		<dc:creator>Lawrence Sheed</dc:creator>
				<category><![CDATA[China Related]]></category>
		<category><![CDATA[Technical Mumbo Jumbo]]></category>
		<category><![CDATA[dell mini3i]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[mini3i]]></category>
		<category><![CDATA[ophone]]></category>

		<guid isPermaLink="false">http://www.computersolutions.cn/blog/?p=370</guid>
		<description><![CDATA[Currently I have an iPhone (ancient 2G), and have just bought a Dell Mini3i (600RMB with an 18month contract @ China Telecom), as I donated my 3G iPhone to one of the extended family back home. The Mini3i runs an Android variant called OPhone. The 3i is a little underwhelming software wise. Its quite crap [...]]]></description>
			<content:encoded><![CDATA[<p>Currently I have an iPhone (ancient 2G), and have just bought a Dell Mini3i (600RMB with an 18month contract @ China Telecom), as I donated my 3G iPhone to one of the extended family back home.</p>
<p>The Mini3i runs an Android variant called OPhone.</p>
<p>The 3i is a little underwhelming software wise.</p>
<p>Its quite crap at the moment as its sitting on Android 1.0 (OPhone 1.0), but for all intents and purposes Android = Ophone its pretty much the same underneath.</p>
<p>There are a bunch of similar phones to this &#8211; the Lenovo O1, LG GW880, Motorola something or other (can&#8217;t be hassled to go look) etc.</p>
<p>While I haven&#8217;t rooted mine just yet, I have been playing around, and reading the Chinese forums.</p>
<p>Boot loader appears to be similar on all the devices &#8211; its made by BORQ&#8217;s in Beijing, and appears to be quite basic.</p>
<p>Motorola and O1 seem to have the best support for now, the main problem in the Chinese forums is people bitching about being stuck on older versions.</p>
<p>Some are running 1.6, most on 1.5, and the unlucky few 1.0 &#8220;Ophone&#8221;<br />
2.0 and 2.1 has yet to hit the mainstream here.</p>
<p>There are people with N1/G5&#8242;s (Nexus 1 / HTC G5) on 2.1 though (yes, thats you in Beijing Tom!), pretty much any phone is available, although anything with wifi is essentially grey import from overseas (HK mostly)</p>
<p>Back to the phone -</p>
<p>Thankfully you can install any apps as apk&#8217;s, no need to hack for that  &#8211; so its fairly easy to get info on the innards.</p>
<p>RootExplorer is your friend <img src='http://www.computersolutions.cn/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>RootExplorer also allows you to remount partitions r/w, so root access is fairly easy too.  There are precompiled su binaries for 1.5 out there, although I&#8217;ve yet to do my phone.</p>
<p>The Dell mini3 is running on a Marvell Tabor.  Fast chip, nice touchscreen, decent resolution, just crap on 1.0.  </p>
<p>Firmware files for most of the &#8220;ophones&#8221; (except motorola) are mff files.</p>
<p>The mff files appear to just be compressed images with instructions for how to write the various partitions out.</p>
<p>eg the Lenovo O1 mff has this in the &#8220;mff&#8221; zip </p>
<p>2010/02/25  10:53       147,111,936 factory_CHERRY.fbf<br />
2010/02/25  10:53               249 factory_CHERRY.mff.mlt<br />
2010/02/25  10:53               364 JADE_EVB_RawNANDx16.ini<br />
2010/02/25  10:53               327 magic_fbf.ini<br />
2010/02/25  10:53             2,692 magic_fbf_inner.ini<br />
2010/02/25  10:53        10,236,719 mfw.pac<br />
2010/02/25  10:53            54,180 MHLV_NTDKB_h.bin<br />
2010/02/25  10:53               176 MHLV_NTDKB_TIM.bin<br />
2010/02/25  10:53               858 NTIM_td.ini</p>
<p>magic_fbf_inner.ini has the layout</p>
<p>[INTEL_FLASH_DEVICE_INPUT_FILE]<br />
Number_of_Images=24</p>
<p>[IMAGE_HEADER_0]<br />
Start_Address=0&#215;240000<br />
Image_Length=0&#215;40000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0</p>
<p>[IMAGE_HEADER_1]<br />
Start_Address=0&#215;6900000<br />
Image_Length=0xf00000<br />
EraseBlocks=1<br />
WriteImage=0<br />
VerifyWrite=0</p>
<p>(etc)</p>
<p>Different phones have different firmware writing software, the Motorola&#8217;s are using RSDLite, LG &#8211; SML_OMS, CTHall, others something homegrown called Firebolt, which is written by BORQS.  I have all the firmware tools already, despite the Ophone8 forums lack of courtesy in sharing, grrr.</p>
<p>Most firmware tools appear similar though functionality wise.<br />
Haven&#8217;t played around inside the phone yet to see if its easy to get jtag access, although that was mostly because i couldn&#8217;t work out how to remove the top part without breaking it.</p>
<p>If anyone wants more info, or a firmware dump let me know.</p>
<p>Hopefully there is some interest out there in the English speaking world for these!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computersolutions.cn/blog/2010/03/dell-mini-3i-ophone-hacking-thoughts-notes/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

