NEC LifeTouch S25 そのままでは使い物にならないので改造するとき用のメモ

NEC LifeTouch S25 そのままでは使い物にならないので改造するとき用のメモ



事前用意

# psneuter sh, busybox
# すべてARM用、 Androidのlinkerが謎(linux-ldと違う)で、しかもglibcではなくbionicなので、staticコンパイルされたもの
# 本体の方で、設定>アプリケーション>開発>SUBデバッグを有効にする。

#あと、関係ないけどLang->Englishにすると表示されないメニューがある、wifiが死亡するなど、全体的に作りが甘い。
#作りが甘いのが許されるのは、後で個人が修理できる環境が整っているからなのだが...せめてupdate.zipぐらいftpに乗せておいてくれ、不便でしかたない


adb が無ければ入れる。

git clone --depth=1 git://github.com/karfield/adb.git && ./configure --prefix=/usr && make && make install

2.2用ならpsneuterが動くので

../adb push psneuter /data/local/tmp/
../adb shell chmod 777 /data/local/tmp/psneuter
../adb shell /data/local/tmp/psneuter
sleep 30

最低限のバックアップを取っておく

#しかし、復元できるかは謎。せめてJTAGの位置やSDからの読み込みがあれば良いのだが...
#闇の中を手探りですすめ
../adb shell cat /proc/partitions
#major minor #blocks name
# 31 0 1024 mtdblock0
# 31 1 5120 mtdblock1
# 31 2 5120 mtdblock2
# 31 3 230400 mtdblock3
# 31 4 153600 mtdblock4
# 31 5 369664 mtdblock5
# 31 6 2560 mtdblock6
# 31 7 262656 mtdblock7
# 31 8 2048 mtdblock8
# 31 9 2304 mtdblock9
../adb shell cat /proc/mtd
#dev: size erasesize name
#mtd0: 00100000 00040000 "misc"
#mtd1: 00500000 00040000 "recovery"
#mtd2: 00500000 00040000 "boot"
#mtd3: 0e100000 00040000 "system"
#mtd4: 09600000 00080000 "cache" <---謎
#mtd5: 16900000 00080000 "userdata" <---なにこれ、erasesizeがこの2つだけ大きいのですが

#mtd6: 00280000 00040000 "nonvolatile"
#mtd7: 10080000 00040000 "omfn"
#mtd8: 00200000 00040000 "kpanic"
#mtd9: 00240000 00040000 "ecc"
../adb shell mount |grep mtd
#/dev/block/mtdblock3 on /system type yaffs2 (ro,relatime)
#/dev/block/mtdblock5 on /data type yaffs2 (rw,nosuid,nodev,relatime)
#/dev/block/mtdblock4 on /cache type yaffs2 (rw,nosuid,nodev,relatime)

../adb pull /dev/block/mtdblock0 mtdblock0.img
../adb pull /dev/block/mtdblock1 mtdblock1.img
../adb pull /dev/block/mtdblock2 mtdblock2.img
../adb pull /dev/block/mtdblock3 mtdblock3.img
../adb pull /dev/block/mtdblock4 mtdblock4.img.dirty
../adb pull /dev/block/mtdblock5 mtdblock5.img.dirty
../adb pull /dev/block/mtdblock6 mtdblock6.img
../adb pull /dev/block/mtdblock7 mtdblock7.img
../adb pull /dev/block/mtdblock8 mtdblock8.img
../adb pull /dev/block/mtdblock9 mtdblock9.img

/system を書き込めるように一時変更

../adb shell mount -o remount,rw /dev/block/mtdblock3 /system

PATHの順番でより優先される/system/sbinにまともなutilsを導入

../adb shell mkdir /system/sbin
../adb push psneuter /system/sbin/
../adb push busybox /system/sbin/
../adb push sh /system/sbin/
../adb shell chmod 4755 /system/sbin/psneuter
../adb shell chmod 4755 /system/sbin/busybox
../adb shell chmod 4755 /system/sbin/sh

なぜかbusybox --install . がリンクではなくバイナリそのまま名前変更でコピーされる場合があるので。

#理由が知りたいが、詳細不明なため放置。
../adb shell '/system/sbin/busybox --help | /system/sbin/busybox awk '"'"'BEGIN{print "cd /system/sbin/"}{
if(f==0){if($0 ~ "^Currently"){f=1};next;}gsub(",[ \t]*",",");sub("^[ \t]*","");sub(",$","");FS=",";
for(i=1;i<=NF;i++){if($i=="sh")continue;print "ln -s busybox \x27"$i"\x27";}
}'"'"' |sh '

その他あとで有用かもしれないもののメモ

#We must have this
#persist.service.adb.enable=1
#ro.kernel.android.bootanim
#debug.sf.nobootanimation 1

#パッチ適用されるときの意味とか
#proto MTD:
#path recovery: mtdblock1
#size 2048:
#hash 8d2631d6844767a961d0bd7dbe120895963144b9
#dd if=./mtdblock1.img bs=1 count=2048 |sha1sum == 8d2631d6844767a961d0bd7dbe120895963144b9

#applypatch
#source-proto MTD:
#source-path boot: mtdblock2
#source-size 3321856:
#source-hash 5f3ae0eca9f2cac6170ae584bd549dfb1798908c
#dd if=./mtdblock2.img bs=1 count=3321856 |sha1sum == 5f3ae0eca9f2cac6170ae584bd549dfb1798908c

#target-proto MTD:
#target-path recovery mtdblock1
#target-hash 31db58381514c1062ab4477e5b0faa6695502525
#target-size 3555328
#dd if=./mtdblock1.img bs=1 count=3555328 |sha1sum == 31db58381514c1062ab4477e5b0faa6695502525

#source-hash 5f3ae0eca9f2cac6170ae584bd549dfb1798908c:
#patch /system/recovery-from-boot.p
# this is a IMAGEDIFF format file, whatever that is... NEED INFO ON FILE FORMAT!!!

# Possible hook we can insert.
#service flash_recovery /system/etc/install-recovery.sh
# oneshot
#service home-setup /system/bin/sh /system/presetup/init.wipedata.sh
# user root
# group system
#cat /system/presetup/init.wipedata.sh

解析結果

#../adb shell dmesg |grep OMAP3630

T.I の3630を使用している

#[ 0.000000] Machine: OMAP3430/3630 PINE2 board
#[ 0.000000] OMAP3630 ES1.2 (l2cache iva sgx neon isp 192mhz_clk )
#
# T.I の3630を使用しているらしい。理論上は音声入力がある(これはボードにパターンだけ存在する、コネクタなし)
#JTAGも出ている(はず)、怪しいのは黒白赤の電池接続用端子の、少し上にある4つの丸い端子。裏に3630が存在する。
#使われていない3G用のフラットケーブル上の端子の中には、USB端子が引き出せる場所も(理論上は)存在する(はず)
#パターンは出ていないだろうが、S-videoも理論上は出力できるらしい。
#オンボードにUSBハブ用のICが乗っけてある(ように見える)
# 手がかり置いておきますね [[http://www.ti.com/lit/ug/swpu177aa/swpu177aa.pdf]]

kernel cmdline

#[ 0.000000] Kernel command line: mem=0-8M
#root=/dev/ram0
#console= lpj=2441216 init=/init videoout=omap24xxvout:rotation=0
#omap_vout_mod.video1_numbuffers=6 omap_vout_mod.vid1_static_vrfb_alloc=y omap_vout_mod.video2_numbuffers=6
#omap_vout_mod.vid2_static_vrfb_alloc=y
#androidboot.hardware=LT_S25 omapfb.vram=0:2M reboot=cold wakeup_lock_timeout=1000

オンボードのメモリ

#[ 0.000000] Memory: 376MB = 376MB total
#[ 0.000000] Memory: 352896KB available (5588K code, 1471K data, 184K init, 0K highmem)
#[ 0.000000] Virtual kernel memory layout:
#[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
#[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
#[ 0.000000] vmalloc : 0xd8000000 - 0xf8000000 ( 512 MB)
#[ 0.000000] lowmem : 0xc0000000 - 0xd7800000 ( 376 MB)
#[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
#[ 0.000000] .init : 0xc0008000 - 0xc0036000 ( 184 kB)
#[ 0.000000] .text : 0xc0036000 - 0xc05ab000 (5588 kB)
#[ 0.000000] .data : 0xc05d4000 - 0xc062f058 ( 365 kB)

NAND (サムソン製)

#[ 1.941101] omap2-onenand omap2-onenand: initializing on CS0, phys base 0x00000000, virtual base f8300000
#[ 1.941131] OneNAND Manufacturer: Samsung (0xec)
#[ 1.941131] Muxed Flex-OneNAND 1024MB 1.8V 16-bit (0x260)
#[ 1.941131] OneNAND version = 0x013e
#[ 1.941223] Die 0 boundary: 1025(Unlocked)
#[ 1.941253] Device has 2 eraseregions <---cat /proc/mtd の結果出ていた、erasesizeの理由はこれらしい
#[ 1.941253] [offset: 0x00000000, erasesize: 0x40000, numblocks: 1026]
#[ 1.941253] [offset: 0x10080000, erasesize: 0x80000, numblocks: 1022]

アドレスとか、マッピング先とか

#[ 2.244293] onenand_nvm: read success of block=2 section=12
#[ 2.244293] Creating 10 MTD partitions on "omap2-onenand":
#[ 2.244323] 0x000001500000-0x000001600000 : "misc"
#[ 2.245544] 0x000001000000-0x000001500000 : "recovery"
#[ 2.246429] 0x000000b00000-0x000001000000 : "boot"
#[ 2.247283] 0x000001880000-0x00000f980000 : "system"
#[ 2.248718] 0x000010080000-0x000019680000 : "cache"
#[ 2.249786] 0x000019680000-0x00002ff80000 : "userdata"
#[ 2.251068] 0x000001600000-0x000001880000 : "nonvolatile"
#[ 2.251983] 0x000000000000-0x000010080000 : "omfn"
#[ 2.253479] 0x0000003c0000-0x0000005c0000 : "kpanic"
#[ 2.262847] 0x0000005c0000-0x000000800000 : "ecc"

ボタンの状態を読み出せる、詳しくはchg_usb.sh参照

#[ 2.295166] input: balloon_keypad as /devices/platform/omap2_mcspi.2/spi2.0/balloon_keypad/input/input0
#[ 2.296447] input: balloon_powerkey as /devices/platform/omap2_mcspi.2/spi2.0/balloon_powerkey/input/input1

悪名高い磁気センサー、こいつ殺せばとりあえず画面が謎の反転を起こさないようになるのだろうか…

#[ 2.301574] AK8975 compass driver: init <--ドライバ
#[ 2.302001] input: compass as /devices/virtual/input/input2

どうみてもutilsがfs上に存在しません。ありがとうございました。

#[ 2.711669] Warning: unable to open an initial console.
#[ 2.713165] init: /init.rc: 140: invalid option 'mkdir'
#[ 2.713165] init: /init.rc: 140: invalid option 'mkdir'
#[ 2.713195] init: /init.rc: 143: invalid option 'chown'
#[ 2.713195] init: /init.rc: 143: invalid option 'chmod'
#[ 2.713226] init: /init.rc: 143: invalid option 'chown'
#[ 2.713226] init: /init.rc: 143: invalid option 'chmod'

オンボードのUSBハブのICは、これらしい

#[ 9.469299] musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1
#[ 9.469390] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
#[ 9.469390] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1

GPIO 126 と129は何に繋がってるのだろうか?

#[ 9.965698] ------------[ cut here ]------------
#[ 9.965728] WARNING: at drivers/gpio/gpiolib.c:101 gpio_ensure_requested+0x4c/0x198()
#[ 9.965728] autorequest GPIO-129
#[ 9.965728] Modules linked in: g_android rmi rmi_app_touchpad rmi_phys_i2c
#[ 9.965789] [<c003d288>] (unwind_backtrace+0x0/0xd8) from [<c00764a4>] (warn_slowpath_common+0x48/0x60)
#[ 9.965789] [<c00764a4>] (warn_slowpath_common+0x48/0x60) from [<c00764f4>] (warn_slowpath_fmt+0x24/0x30)
#[ 9.965820] [<c00764f4>] (warn_slowpath_fmt+0x24/0x30) from [<c01abf28>] (gpio_ensure_requested+0x4c/0x198)
#[ 9.965850] [<c01abf28>] (gpio_ensure_requested+0x4c/0x198) from [<c01ac0ec>] (gpio_direction_output+0x78/0x158)
#[ 9.965881] [<c01ac0ec>] (gpio_direction_output+0x78/0x158) from [<c01ee8d0>] (CamdHalExecTalbe+0x12c/0x26c)
#[ 9.965881] [<c01ee8d0>] (CamdHalExecTalbe+0x12c/0x26c) from [<c01eeb1c>] (CamdHalSetup+0x44/0x60)
#[ 9.965911] [<c01eeb1c>] (CamdHalSetup+0x44/0x60) from [<c01f04d0>] (camdrv_mtx_pow_on+0x130/0x1c8)
#[ 9.965911] [<c01f04d0>] (camdrv_mtx_pow_on+0x130/0x1c8) from [<c01e9c38>] (camd_mtx_call+0x1c/0x28)
#[ 9.965942] [<c01e9c38>] (camd_mtx_call+0x1c/0x28) from [<c01e9e74>] (camdrv_ioctl+0x1b4/0x29c)
#[ 9.965972] [<c01e9e74>] (camdrv_ioctl+0x1b4/0x29c) from [<c0104668>] (vfs_ioctl+0x70/0x8c)
#[ 9.965972] [<c0104668>] (vfs_ioctl+0x70/0x8c) from [<c0104cb4>] (do_vfs_ioctl+0x540/0x5ac)
#[ 9.966003] [<c0104cb4>] (do_vfs_ioctl+0x540/0x5ac) from [<c0104dac>] (sys_ioctl+0x8c/0xb4)
#[ 9.966033] [<c0104dac>] (sys_ioctl+0x8c/0xb4) from [<c0036f00>] (ret_fast_syscall+0x0/0x2c)
#[ 9.966033] ---[ end trace 4b3554abbc30ed12 ]---
#[ 9.966888] ------------[ cut here ]------------
#[ 9.966888] WARNING: at drivers/gpio/gpiolib.c:101 gpio_ensure_requested+0x4c/0x198()
#[ 9.966918] autorequest GPIO-126
#[ 9.966918] Modules linked in: g_android rmi rmi_app_touchpad rmi_phys_i2c
#[ 9.966949] [<c003d288>] (unwind_backtrace+0x0/0xd8) from [<c00764a4>] (warn_slowpath_common+0x48/0x60)
#[ 9.966949] [<c00764a4>] (warn_slowpath_common+0x48/0x60) from [<c00764f4>] (warn_slowpath_fmt+0x24/0x30)
#[ 9.966979] [<c00764f4>] (warn_slowpath_fmt+0x24/0x30) from [<c01abf28>] (gpio_ensure_requested+0x4c/0x198)
#[ 9.967010] [<c01abf28>] (gpio_ensure_requested+0x4c/0x198) from [<c01ac0ec>] (gpio_direction_output+0x78/0x158)
#[ 9.967010] [<c01ac0ec>] (gpio_direction_output+0x78/0x158) from [<c01ee8d0>] (CamdHalExecTalbe+0x12c/0x26c)
#[ 9.967041] [<c01ee8d0>] (CamdHalExecTalbe+0x12c/0x26c) from [<c01eeb1c>] (CamdHalSetup+0x44/0x60)
#[ 9.967041] [<c01eeb1c>] (CamdHalSetup+0x44/0x60) from [<c01f04d0>] (camdrv_mtx_pow_on+0x130/0x1c8)
#[ 9.967071] [<c01f04d0>] (camdrv_mtx_pow_on+0x130/0x1c8) from [<c01e9c38>] (camd_mtx_call+0x1c/0x28)
#[ 9.967102] [<c01e9c38>] (camd_mtx_call+0x1c/0x28) from [<c01e9e74>] (camdrv_ioctl+0x1b4/0x29c)
#[ 9.967102] [<c01e9e74>] (camdrv_ioctl+0x1b4/0x29c) from [<c0104668>] (vfs_ioctl+0x70/0x8c)
#[ 9.967132] [<c0104668>] (vfs_ioctl+0x70/0x8c) from [<c0104cb4>] (do_vfs_ioctl+0x540/0x5ac)
#[ 9.967132] [<c0104cb4>] (do_vfs_ioctl+0x540/0x5ac) from [<c0104dac>] (sys_ioctl+0x8c/0xb4)
#[ 9.967163] [<c0104dac>] (sys_ioctl+0x8c/0xb4) from [<c0036f00>] (ret_fast_syscall+0x0/0x2c)
#[ 9.967163] ---[ end trace 4b3554abbc30ed13 ]---

Kernel tainted (for no reason)

#おそらくT.Iのソースコードをコピペでビルドしたときに確認を忘れたのだろう。GPLと指定してないのでカーネルが汚染認定されてる
#[ 10.186248] omap_cir_uart: module license 'unspecified' taints kernel.

Wifi

#[ 137.738952] (000:00:01:632): ar6000_init() Got WMI @ 0xd7148400.
#[ 137.770721] (000:00:01:671): mac address = 00:3a:9d:9b:c2:82


本体をざっと眺めた後に、再構築用のパッチ検索に出向く

#検索してもNECからはロクな資料が出てこない
#
#TexusInsturmentsでは[[http://code.google.com/p/omap-u-boot-utils/downloads/list]]のブートローダ使用を推奨らしい
#OMAP36xx Multimedia Device ES 1.x Public TRM - Version AA (Rev. AA) [[http://www.ti.com/lit/pdf/swpu177]]
#によれば、JTAGでの書き込みは XDS200 で可能であると記載されている。
#
# ブートローダとして使えそうなのは
#これか…使ったこと無いのだが、どんな感じなのだろうか?
# NECからソースコードダウンロードしたいが、グーグルにリンクが引っかからないorz
# まちがってC1のソースを落としたが、明らかに違う。どうするべ。
#
# NECの電話対応で問題解決(この部署は異常に良い対応だった。NECのとある別製品のサポートはASUS並だったのだが...はて?)
# 開封した箱に同封してある紙に書いてあるが、PDFは無いし、機械で検索は掛けさせないよ!(NECなりの お も て な し 精神で。

悪用厳禁

# www.nec.co.jp/cgi-bin/solution/cloud/communicator/gpl/download.cgi?
# company=NEC&
# series=LifeTouch&
# model=S01& (C1などを他のページに確認。)
# mac_address=(6 byte in ascii hex)
# NEC AccessTechnica, Ltd. == 00:3A:9D:XX:XX:XX
#
# tar bomb じゃないですか、やだー(泣)
#www.cd.cloudcommunicator.jp /gpl/ files/
#LifeTouchS_S01_v1.tar.gz (122MB)
#LifeTouchS_S01_v2.tar.gz (6MB)
#git とは言わないが、せめてsvnとかcvsで欲しかったな。何が悲しくてパッチを自分で切り分けなけりゃいかんのだ
# 遠回しに嫌がらせでもしたいのか。

作業中

とりあえず、パッチの仕分けがおこなえるまでは保留

ドライバ

作業中

とりあえず、パッチの仕分けがおこなえるまでは保留

課題

真っ新なNANDにUART(たぶん3、しかし、実機のどのピンがそれに該当しているか謎)越しに、ブートローダ流し込めるようになりたい
SDカードからでも構わないが、とにかく現状ではミスってNANDの中身消滅させてしまうと復旧作業が不可能なため。
u-bootとかx-bootとか、nvidiaのAPX modeでのnvflashのようなものが必要

操作手順
HOMEキーを押しながらメイン電源ON(だったと思う)
間違ってたら修正たのむ

ハードウェア

バッテリ

JTAGテストポートの位置とピンの配置

知ってる人たのむ
特に、ロジアナもってるヤシはたのむ。俺のは天に召されてしまってるので、手持ちが無い。あと金もない
手がかり置いてきますね[[http://www.ti.com/lit/ug/swpu177aa/swpu177aa.pdf]]

UART,SDCARD,USBなど、bootloaderが読み込む順番

(さて、どのアドレスに書かれているのか調べないといかん)
 


いま探しているもの

LTNの情報. 仕事.

Written by GreenFox @ 20140331 Under GPL, CreativeCommonsShareAlike DUAL licence.

  • 最終更新:2014-10-04 17:42:24

このWIKIを編集するにはパスワード入力が必要です

認証パスワード