{"id":1025,"date":"2013-01-11T14:51:49","date_gmt":"2013-01-11T14:51:49","guid":{"rendered":"http:\/\/41j.com\/blog\/?p=1025"},"modified":"2013-01-13T04:18:59","modified_gmt":"2013-01-13T04:18:59","slug":"lifetouch-note","status":"publish","type":"post","link":"https:\/\/41j.com\/blog\/2013\/01\/lifetouch-note\/","title":{"rendered":"Lifetouch note notes"},"content":{"rendered":"<h2>Accessing APX Mode<\/h2>\n<p><a href=\"http:\/\/41j.com\/blog\/2013\/01\/lifetouch-note\/photo1\/\" rel=\"attachment wp-att-1027\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2013\/01\/photo1-300x225.jpg\" alt=\"lifenote touch apx\" width=\"300\" height=\"225\" class=\"aligncenter size-medium wp-image-1027\" srcset=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2013\/01\/photo1-300x225.jpg 300w, https:\/\/41j.com\/blog\/wp-content\/uploads\/2013\/01\/photo1.jpg 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>There&#8217;s a unplaced switch just above the Nvidia Tegra 250 CPU shield (see image above). Connect pins 3 and 4 of SW2 while pressing the power button to enable APX mode.<\/p>\n<h2>Flashing a partition using nvflash<\/h2>\n<p>nvflash &#8211;bl \/usr\/lib\/nvflash\/fastboot.bin &#8211;download 11 .\/lubuntu-12.10-preinstalled-desktop-armhf+ac100.bootimg<\/p>\n<p>The Lifetouch note appears to have the LNX partition on partition 11, not 6 as the ac100.<\/p>\n<p>Note: The ac100 bootimage does NOT work. The screen does some funky stuff, but nothing to indicate that it&#8217;s actually booting a kernel. (update: The SOSBoot kernel boots and the serial console works, but not the display.)<\/p>\n<h2>Partition table<\/h2>\n<p>The partition table can be dumped with nvflash &#8211;bl <bootloader> &#8211;getpartitiontable <filename>, mine is as follows:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nPartitionId=2\r\nName=BCT\r\nDeviceId=18\r\nStartSector=0\r\nNumSectors=1536\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=3\r\nName=PT\r\nDeviceId=18\r\nStartSector=1536\r\nNumSectors=128\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=4\r\nName=EBT\r\nDeviceId=18\r\nStartSector=1664\r\nNumSectors=1024\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=5\r\nName=NVC\r\nDeviceId=18\r\nStartSector=2688\r\nNumSectors=256\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=6\r\nName=MBR\r\nDeviceId=18\r\nStartSector=2944\r\nNumSectors=512\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=7\r\nName=MSC\r\nDeviceId=18\r\nStartSector=3456\r\nNumSectors=1024\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=8\r\nName=MFG\r\nDeviceId=18\r\nStartSector=4480\r\nNumSectors=76800\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=9\r\nName=SOS\r\nDeviceId=18\r\nStartSector=81280\r\nNumSectors=2560\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=10\r\nName=ER1\r\nDeviceId=18\r\nStartSector=83840\r\nNumSectors=128\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=11\r\nName=LNX\r\nDeviceId=18\r\nStartSector=83968\r\nNumSectors=4096\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=12\r\nName=ER2\r\nDeviceId=18\r\nStartSector=88064\r\nNumSectors=128\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=13\r\nName=APP\r\nDeviceId=18\r\nStartSector=88192\r\nNumSectors=98304\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=14\r\nName=ER3\r\nDeviceId=18\r\nStartSector=186496\r\nNumSectors=128\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=15\r\nName=CAC\r\nDeviceId=18\r\nStartSector=186624\r\nNumSectors=76800\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=16\r\nName=ER4\r\nDeviceId=18\r\nStartSector=263424\r\nNumSectors=128\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=17\r\nName=USP\r\nDeviceId=18\r\nStartSector=263552\r\nNumSectors=128000\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=18\r\nName=ER5\r\nDeviceId=18\r\nStartSector=391552\r\nNumSectors=128\r\nBytesPerSector=2048\r\n\r\n\r\nPartitionId=19\r\nName=UDA\r\nDeviceId=18\r\nStartSector=391680\r\nNumSectors=3520000\r\nBytesPerSector=2048\r\n\r\n<\/pre>\n<h2>nvflash output<\/h2>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nnvflash --bl \/usr\/lib\/nvflash\/fastboot.bin --download 11 .\/ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg\r\nNvflash started \r\nrcm version 0X20001                                \r\nSystem Information:                               \r\n   chip name: t20                                 \r\n   chip id: 0x20 major: 1 minor: 3                        \r\n   chip sku: 0x8                                  \r\n   chip uid: XXXXXX                   \r\n   macrovision: disabled                          \r\n   hdcp: enabled                                  \r\n   sbk burned: false                                       \r\n   dk burned: false                                                      \r\n   boot device: emmc                                                                     \r\n   operating mode: 3                                                                                        \r\n   device config strap: 0                                              \r\n   device config fuse: 0                           \r\n   sdram config strap: 0                                           \r\n                                                                   \r\ndownloading bootloader -- load address: 0x108000 entry point: 0x108000                                  \r\nsending file: \/usr\/lib\/nvflash\/fastboot.bin                                                  \r\n| 940112\/940112 bytes sent  \r\n\/usr\/lib\/nvflash\/fastboot.bin sent successfully                \r\nwaiting for bootloader to initialize                                                             \r\nbootloader downloaded successfully                                \r\nsending file: .\/ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg                   \r\n\/ 8388608\/8388608 bytes sent                                                                       \r\n.\/ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg sent successfully\r\n<\/pre>\n<p>PCB Images:<\/p>\n\n\t\t<style type=\"text\/css\">\n\t\t\t#gallery-1 {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-item {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 33%;\n\t\t\t}\n\t\t\t#gallery-1 img {\n\t\t\t\tborder: 2px solid #cfcfcf;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-caption {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\t\/* see gallery_shortcode() in wp-includes\/media.php *\/\n\t\t<\/style>\n\t\t<div id='gallery-1' class='gallery galleryid-1025 gallery-columns-3 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/41j.com\/blog\/2013\/01\/lifetouch-note\/photo2\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2013\/01\/photo2-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/41j.com\/blog\/2013\/01\/lifetouch-note\/photo3\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2013\/01\/photo3-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/41j.com\/blog\/2013\/01\/lifetouch-note\/photo4\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2013\/01\/photo4-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><br style=\"clear: both\" \/><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/41j.com\/blog\/2013\/01\/lifetouch-note\/photo5\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2013\/01\/photo5-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/41j.com\/blog\/2013\/01\/lifetouch-note\/photo6\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2013\/01\/photo6-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl>\n\t\t\t<br style='clear: both' \/>\n\t\t<\/div>\n\n<h2>Bootable kernel<\/h2>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"http:\/\/www.youtube.com\/embed\/QKywqaw23qs\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>Kernel from: http:\/\/developer.download.nvidia.com\/assets\/mobile\/files\/tegra-linux-12.alpha.1.0.tar.gz <\/p>\n<p>Boot image built with: .\/bootloader\/mkbootimg &#8211;kernel .\/kernel\/zImage &#8211;ramdisk NONE -o ~\/m.img &#8211;cmdline &#8220;debug mem=128M&#8221;<\/p>\n<p>Update: sosboot and probably other ac100 kernel boot and show data on the serial port.<\/p>\n<h2>Serial Port<\/h2>\n<p>There&#8217;s a 3.3v level serial port located under the SD Card slot (see additional post). No connector is mounted, you&#8217;ll need to solder one. The output is as follows:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n**********Aos DebugSemiHosting Initialized*******                           \r\n---------------------------------------------------                         \r\nODM CPU freq request beyond SOC limit                                       \r\nADJUSTED CLOCKS:                                                            \r\nMC clock is set to 333000 KHz                                               \r\nEMC clock is set to 666000 KHz (DDR clock is at 333000 KHz)                 \r\nPLLX0 clock is set to 1000000 KHz                                           \r\nPLLC0 clock is set to 600000 KHz                                            \r\nCPU clock is set to 1000000 KHz                                             \r\nSystem and AVP clock is set to 240000 KHz                                   \r\nGraphicsHost clock is set to 108000 KHz                                     \r\n3D clock is set to 111000 KHz                                               \r\n2D clock is set to 111000 KHz                                               \r\nEpp clock is set to 111000 KHz                                              \r\nMpe clock is set to 111000 KHz                                              \r\nVde clock is set to 240000 KHz                                              \r\nDTT: TMON initialization failed                                             \r\nBootloader version: eng.NEC.20110609.091639                                 \r\n                                                                            \r\n                                                                            \r\nI2C Slave is *New*                                                          \r\n***NVEC:Received Spurious Response from EC.Checking for android ota recovery\r\n                                                                            \r\nOS will cold boot in 0 seconds if no input is detected                      \r\n                                                                            \r\nKey driver not found.. Booting OS                                           \r\n                                                                            \r\nCold-booting Linux                                                          \r\n<\/pre>\n<h2>Source code<\/h2>\n<p>There&#8217;s a source code release by NEC. I&#8217;ve uploaded it <a href=\"http:\/\/41j.com\/LT-NA75W_source-code.zip\">here<\/a>.<\/p>\n<h2>Framebuffer notes<\/h2>\n<p>From the NEC source release:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n  \/\/ these values are just defaults. they will be over-written with th\r\n  \/\/ correct values from the boot args.                               \r\n  .var = {                                                            \r\n    .xres   = 800,                                                    \r\n    .yres   = 480,                                                    \r\n    .xres_virtual = 800,                                              \r\n    .yres_virtual = 480,                                              \r\n    .bits_per_pixel = 16,                                             \r\n    .red    = {11, 5, 0},                                             \r\n    .green    = {5, 6, 0},                                            \r\n    .blue   = {0, 5, 0},                                              \r\n    .transp   = {0, 0, 0},                                            \r\n    .activate = FB_ACTIVATE_NOW,                                      \r\n    .height   = -1,                                                   \r\n    .width    = -1,                                                   \r\n    .pixclock = 24500,                                                \r\n    .left_margin  = 0,                                                \r\n    .right_margin = 0,                                                \r\n    .upper_margin = 0,                                                \r\n    .lower_margin = 0,                                                \r\n    .hsync_len  = 0,                                                  \r\n    .vsync_len  = 0,                                                  \r\n    .vmode    = FB_VMODE_NONINTERLACED,                               \r\n  },                                                                  \r\n<\/pre>\n<p>AC100 config, patch to use different display:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n--- marvin-2.6.38.8-oc\/arch\/arm\/mach-tegra\/board-paz00-panel.c.old\t2011-09-19 19:33:24.000000000 +0100\r\n+++ marvin-2.6.38.8-oc\/arch\/arm\/mach-tegra\/board-paz00-panel.c\t2011-12-29 23:56:45.588167000 +0000\r\n@@ -251,7 +251,7 @@\r\n \t{\r\n \t\t.name\t= &quot;fbmem&quot;,\r\n \t\t.start\t= 0x1fd95000,\r\n-\t\t.end\t= 0x1fd95000 + 0x26B000 - 1,   \/\/ 2.4 MB @ 509 MB\r\n+\t\t.end\t= 0x1fd95000 + 0x384000 - 1,   \/\/ 2.4 MB @ 509 MB\r\n \t\t.flags\t= IORESOURCE_MEM,\r\n \t},\r\n };\r\n@@ -279,15 +279,15 @@\r\n \r\n static struct tegra_dc_mode paz00_panel_modes&#x5B;] = {\r\n \t{\r\n-\t\t.pclk = 42430000,\r\n+\t\t.pclk = 71735520,\r\n \t\t.h_ref_to_sync = 4,\r\n \t\t.v_ref_to_sync = 2,\r\n \t\t.h_sync_width = 136,\r\n \t\t.v_sync_width = 4,\r\n \t\t.h_back_porch = 138,\r\n \t\t.v_back_porch = 21,\r\n-\t\t.h_active = 1024,\r\n-\t\t.v_active = 600,\r\n+\t\t.h_active = 1280,\r\n+\t\t.v_active = 720,\r\n \t\t.h_front_porch = 34,\r\n \t\t.v_front_porch = 4,\r\n \t},\r\n@@ -295,8 +295,8 @@\r\n \r\n static struct tegra_fb_data paz00_fb_data = {\r\n \t.win\t\t= 0,\r\n-\t.xres\t\t= 1024,\r\n-\t.yres\t\t= 600,\r\n+\t.xres\t\t= 1280,\r\n+\t.yres\t\t= 720,\r\n \t.bits_per_pixel\t= 16,\r\n };\r\n <\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Accessing APX Mode There&#8217;s a unplaced switch just above the Nvidia Tegra 250 CPU shield (see image above). Connect pins 3 and 4 of SW2 while pressing the power button to enable APX mode. Flashing a partition using nvflash nvflash &#8211;bl \/usr\/lib\/nvflash\/fastboot.bin &#8211;download 11 .\/lubuntu-12.10-preinstalled-desktop-armhf+ac100.bootimg The Lifetouch note appears to have the LNX partition on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-1025","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1RRoU-gx","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/posts\/1025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/comments?post=1025"}],"version-history":[{"count":13,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/posts\/1025\/revisions"}],"predecessor-version":[{"id":1048,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/posts\/1025\/revisions\/1048"}],"wp:attachment":[{"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/media?parent=1025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/categories?post=1025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/tags?post=1025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}