Saturday, September 13, 2014

ATmega328Pファームウエアー書き込み

私はMakefileを作って、ARDUINO対応の16MHzファーム書き込みに対応しています。

このMakefileファイルは https://github.com/osamuaoki/avrdude-friend にあります。

$ make set

などとシェルから入力して使ってください。(avrdudeやarduinoパッケージはインストールする必要ががあります)

ここで理解するべき基本は:
  • チップの初期状態は、8MHzの内部発振器をプリスケーラーで1/8に分周したのをMCUのクロックで使っている。
  • ARDUINO用の状態は、16MHzの外付クリスタル発振器をそのままMCUのクロックで使っている。
  • ARDUINO用のファームウエアーをフラッシュに書いたあと読み出せないようにLOCKしている。
  • 読み出せないようロックされたのを外すには全消去(erase)しかない。

MCUがこれで消去して初期化できなくなるケースとして、何かの間違いで外部クロック使用に設定してしまうことがあるそうです。その際はクロックピンに何らかのクロックをいれればなんとか対応できます。

これよりややこしい壊し方をした際には、RESETに12Vをかけてプログラムする高圧パラレルプログラミング(ATINY等では高圧シリアルプログラミング)なのですが、滅多に無いので新しいチップを買う方が安いですね。

Linuxの基本が分かっていればMakefileの意図するところはわかりますよね。分からないときは


などを読んでください。

Avrdude 6.1-2 がFT232Rには必要

FT232Rベースのプログラマーを使おうとして最近動かなくなったと言う事ございませんか?

少なくともLinux系ではそのようです。

avrdude中のこのコード部分は「すzのAVR研究」にある「FT245R/FT232R で avrdude (2)」と同じようです。 http://suz-avr.sblo.jp/category/780472-1.html 「すzのAVR研究」からコードがマージされたのがバージョン6以降です。でもどうも最近動かないようでした。

結論としては、どうも使用するスレッドライブラリーでバージョンアップがあり、「すzのAVR研究」も含めてタイミングがルーズなところでアップデートしたライブラリーを使うとレグレッションでコケるようです。これはUPSTREAMで問題になってい、パッチもありました。このパッチを私のところで当てると一発で問題解決しました。

DEBIANにパッチ付きでレポートしたところ、すでに修正されました。Debian/Ubuntuなら6.1-2以降のバージョンなら修正済みです。あと一週間もすればDEBIANのTESTING環境やUBUNTUで使えるようになるでしょう。
 https://bugs.debian.org/760764

アップストリームもこのパッチを適用したようなので、まもなくすべて修正されるので安心してください。
 https://savannah.nongnu.org/bugs/?40086

実の所、まずTTL-232R-5Vをプログラマー用に買いましたが、それを確認する前に安さに引かれてプログラマー機能内蔵のUncompatinoも買ってしまいました。さてUncompatino用の部品セットに入っているATMega328PにはARDUINOのファームが入っていないので自分で書き込む必要がありAVRDUDEを起動して動かなかったときには焦りました。

ちなみに、FT232R用のコードはft245r.cとft245r.hです。avrftdi.cなどでは無いようです。

FT-232Rベースのプログラマー作成方法集

ATmega/ATtinyなどのファームウエアーを最初に書き込む際には、専用のプログラマーが必要です。

もちろんARDUINOを一つ持っていれば、教科書通り新品のATMega328Pにブートローダーを書き込むことができます。http://arduino.cc/en/Tutorial/ArduinoISP

何かの拍子でARDUINO上のATMega328Pを壊すと回復不能のようで不安ですよね。ARDUINOに頼らずにプログラマーを確保する一番簡単な方法はFT-232Rを使うプログラマーです。この際ホストPC側のプログラムにはAVRDUDEというプログラム(6.1-2以降)が必要です。(この話は後で書きます)

ここで重要なのは、FT232Rというのは単なる非同期シリアルへの変換だけでなくかなり高機能な同期シリアル変換機能を持っているということです。この機能を使うと「遅い」といわれたシリアルポートを使ったbitbang(ビット叩き)とは異次元の高速書き込みができることです。

FTDI製のFT-232Rという石はUNOになる前のUSBのARDUINO duemilenoveには乗っていて、この場合うまくジャンパー飛ばしてつなげばプログラマーとして使えるとのことです。
 http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html

この特性に注目した設計をされているUncompatinoというARDUINO (UNOの前の)Duemilenove (半)互換ボードは、通常のICSPコネクターはないもののボード上のFT232Rチップを使ってブートローダーを書き込めるようにできたショートピン2*4本が立っています。(たしか基板+部品で1300円程度とお買い得ですが、表面実装のFT-232Rの半田づけがあるので中上級者用)
 http://akizukidenshi.com/catalog/g/gP-07487/
 http://akizukidenshi.com/download/ds/akizuki/k6096_manual_20130816.pdf

またTTL-232R-5Vという、既製のUSBからTTLレベル非同期シリアル変換ケーブルもプログラマーとして使えるはずです。
 http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm
 http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf
具体的には上記ケーブル(私は秋月で1,580円で購入)とICSP用の6PINメスが両方についたケーブル(私はマルツで【LFCBL06-01】6ピンフラットケーブルを154円で購入)を購入します。6PINにコネクターのみを探してもまず見つからないし高いので注意しましょう。そして2列のピンヘッダーを3+1+9=13本の幅で切り出しこれの後ろ側を半田付で結線するだけでアダプターになります。(コネクター間に1本分余裕が要ります)

 # TTL-232R GND 1 Black  -> ICPS GND   (6 pin)
 # TTL-232R CTS 2 Brown  -> ICPS MOSI  (4 pin)
 # TTL-232R VCC 3 Red    -> ICPS VCC   (2 pin)
 # TTL-232R TXD 4 Orange -> ICPS RESET (5 pin)
 # TTL-232R RXD 5 Yellow -> ICPS SCK   (3 pin)
 # TTL-232R RTS 6 Green  -> ICPS MISO  (1 pin)



実写真へのリンク: 配線直後 と 安定化後(ホットメルトの接着剤で固めて配線が切れたりするのを防止。半田付け/接着剤の両工程はピンヘッダーをブレッドボードなどに刺し固定して行うこと。途中で動かすとピンが動いてしまいます。)

GNDとVCC以外はAVRDUDEの設定でなんとでもなるので、配線しやすいようにしてください。(以下の表のD0-D7の数字をavrdude.confや~/.arduino/.avrduderc内のprogramer設定で使用します。ICの脚番号、ソケットの番号とうややこしいので要注意。)

FT232RL
FT232RL
Bit-banging data
Diecimila/Duemilnove
TTL-232R
ttl232r Adapter
Uncompatino
TXD (1)
D0

4 ORANGE
5 (RESET)
→ 2 ATmega
RXD (5)
D1

5 YELLOW
3 (SCK)
→ 3 ATmega
RTS# (3)
D2

6 GREEN
1 (MISO)

CTS# (11)
D3
X3-1
2 BROWN
4 (MOSI)
o o→ MISO
DTR# (2)
D4




DSR# (9)
D5
X3-2


o o→ SCK
DCD# (10)
D6
X3-3


o o→ MOSI
RI# (6)
D7
X3-4


o o→ RESET
VCC


3 RED
2 (VCC)

GND


1 BLACK
6 (GND)


Arduino main MCU side
ATMega328
ICPS
Arduino
MOSI (17)
4
J3-4 (D11)
MISO (18)
1
J3-5 (D12)
SCK (19)
3
J3-6 (D13)
RESET (1)
5
Switch
VCC
2

GND
6


AVRDUDE: -c ttl232r と指定してください。本結線に合わせた設定になります。
(-c ft232r では「Device is not responding to program enable. Check connection.」といわれて動きません。ご注意ください)

Friday, August 29, 2014

Arduino Uno Rev. 3 + Akizuki modules: LIS3DH (accelerometer) L3GD20 (Gyroscope)

秋葉原の秋月でArduinoを買いました。

合せてSTのチップを使ったセンサーモジュールのLIS3DH (accelerometer) L3GD20 (Gyroscope)もゲットしました。 

秋月のLIS3DH同封説明書には、12ビットデーターとあるが、STのデーターシートにはデーター出力は16ビットとあることからして少々不安。確かに感度とレンジを見ると符号込みで12ビットの有効数字のようで、読み出しが16ビットに収まるということのようですね。 

ArduinoのC++では「int」が16 bit signed integer と気付くのに時間がかかるなど、少々手間取りましたが、データーシートとApplication notesを読みながら何とかこれらセンサーをSPI 経由で同時接続して何とかデーターを取り込むことができたので、ここに置いておきます。

以下のコード部分で文字化けしました。またFET内蔵保護ダイオードの向きが逆でした。うまく編集できないので、ここにコメントしておきます。

1: VDD
  2: SPC <= SCK (D13) (P19)
  3: SDI <= MOSI(D11) (P17)
  4: SDO => MISO(D12) (P18)
  5: CS  <=     (D9)  (P15)

  ST L3GD20 3-axis gyroscope pins: (larger 14 pins)
  1: VDD
  2,10,14: GND
  3: SPC <= SCK (D13) (P19)
  4: SDI <= MOSI(D11) (P17)
  5: SDO => MISO(D12) (P18)
  6: CS  <=     (D10) (P16)

このおもちゃ、飽きるまで当分遊べそうです。

プログラムここにはって置いたのでは使いにくいので、GITHUBに置きました。

https://github.com/osamuaoki/avrdude-friend


本設定はAVRDUDEに組み込まれました。「-c uncompatino」で呼び出してください。

5V-3,3Vのレベルシフト回路ですが、Gを3.3Vのみに接続と修正済としたアスキーアートを残します。

Both sensors runs under 3.3V.  These are connected to Arduino via FET gate follower V-converter circuits. Bidirectional level shift was done with the following for all I/O with Arduino/Sensors.

                           2N7002K
  3.3V     o------+-----------+          +-------o 5V
                  |           |          |
         10 Kohm  Z         =====        Z  10 Kohm
                  Z       S | ^ | D      Z
                  |         | | |        |
  Sig 3.3V o------+------+--+-+ +--+-----+-------o Sig 5V
                         |         |
                         +---|<|---+ 
                  (Internal diode of 2N7002K)


Tuesday, April 22, 2014

Android 開発環境(Debian)

別に本当に開発をするわけでもないけど、Debian unstable/sid環境下でのAndroid開発を作ってみました。

開発環境整備は情報が多すぎ何処からとりかかるか迷うが、Debian sid/testing (2014)環境ベースだと、http://developer.android.com/sdk/installing/index.html に従うこととなる。

とりあえずSDKとNDKをHOMEのandroidディレクトリにアーカイブで落とす。
Debianから、OpenJDK Development Kit (JDK)とOpenJDK Java runtime, using Hotspot JITの導入をし、さらにeclipseとegitを導入します。

$ sudo apt-get install openjdk-7-jdk openjdk-7-jre
$ sudo apt-get install eclipse eclipse-egit

そこで、METAキー(Windowsキー)を押し、eclipseと打ち、出たアイコンを叩きeclipseを起動します。Workspace launcher は素直にデフォルトの「/home/osamu/workspace」としました。

ADT Pluginの導入ですが、https://developer.android.com/tools/sdk/eclipse-adt.html から読み出し、https://developer.android.com/sdk/installing/installing-adt.html にある手順を踏み、Help−>Install new softwareと進み、work withにADT のサイトの「https://dl-ssl.google.com/android/eclipse/」を入れます。(androidと命名しました)そしてすべてインストールします。

「SDK Manager is missing ...」とかのメッセージがでるので、素直に「Open SDK Manager」のボタンを押す。(たしか最初どこかの段階でSDKの場所を聞かれ、「/home/osamu/android/sdk」と入力した)

とにかく自動選択されるものを、毎回ライセンスを受け入れることにチェックしてインストールする事を繰り返します。(うんざり)なんか中途半端にインストールされている気がします。

~/.bashrcに「PATH=${PATH}:~/android/sdk/tools」を加えます。ターミナルを再起動しshellを更新します。

android sdkとしてインストールを完了。(Toolsだけは全部選びません。最新バージョンだけ選びました)
だいぶ改善するようですが一部うまくいっていません。今日は悩まず、ここでeclipseを再起動します。

当分、チュートリアルをフォローして遊びます。今日はここまで。

PS: STPでの接続でFilerのDevicesにNexus 5が見えなくなってます。パッケージアップグレードで起こったバグかな?とりあえず困らないので放置です。


Sunday, April 20, 2014

Nexus 5 購入、即 Debian を用いてroot化

久しぶりに新電子機器購入。 Nexus 5 / 32 MB (Google Play版) (シンガポールから送られてきます)

SIMは別途IIJmioのSMS option付きベーシックプラン(音声なし)を Bic Cameraで購入。

早速Debian GNU/Linux Jessie/Sid with Gnome 3システムUSBでつなぐと、Gnome Filerで何かファイルが見えるではありませんか。mountされたファイルシステムに対応するものがないので、何故かなと思っていると、どうも最近はメディア転送プロトコル(MTP)とか言うしゃれたことでファイルにアクセスするようだ。

携帯電話躯体の蓋を開けハードの中を覗きたい衝動を抑え、兎に角ソフトの中を見ることで我慢することにする。

XDA Developer http://forum.xda-developers.com/google-nexus-5 に従うことにした。root の取り方は、http://forum.xda-developers.com/google-nexus-5/#root にある(少々古い環境前提)情報が基本。現在のDebian sid/jessieのマルチアーチ対応済みの64 bit環境でルート化のために32bitアプリを走らすのは、上記に書かれているようにlib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6等をインストールする代わりに対応するlibz1:i386 (実際はこれはバーチャルパッケージなのでzlib1g:i386 をインストール)等をインストールするのが準備となります。以下その手順のおさらい:
  • Nexus 5はOSでのホスト名が「hammerhead」ですので、これが別名です。
  • Wifi環境を確保する。
  • http://autoroot.chainfire.eu/ にいき、nexus 5を探す。Nexus 5 はFastboot flashable devicesです。
  • http://download.chainfire.eu/363/CF-Root/CF-Auto-Root/CF-Auto-Root-hammerhead-hammerhead-nexus5.zipをPC (Debian)にダウンロード。
  • zip fileの解凍して、できたディレクトリーの中に入る。
  • "chmod +x root-linux.sh" を実行し、このスクリプトを実行可能にする。
  • 必要パッケージのAPTからの導入(SDK自体の導入や、PATH設定はしなくてOK)
    • android-tools-adb - Android Debug Bridge CLI tool
    • android-tools-fastboot - Android Fastboot protocol CLI tool
    • android-tools-fsutils - Android ext4 utilities with sparse support
  • Nexus 5 を起動、Developer  modeにします。(設定->端末情報を7回連続タップ)
  • 開発者モードが見えるようになったら、中のUSB Debugにチェックをいれます。
  • Nexus 5の電源スイッチを押し、完全に「電源を切」ります。
  • USBでNexus 5 をPCに継ぎます
  • 再びNexus 5の「電源ボタン」と「ボリュームダウンボタン」の同時押しでfastboot再起動します。
  • "./root-linux.sh"と実行
  • スクリーン表示に従いすすむ。
    • データーを消すので、もし何か大事なデーターを入れている際には事前バックアップが必要です。私は何も無かったので、全く気にしませんでした。
至って簡単です。(無保障ですが)

上記ページにあるWEBビデオを見ればGUIベースでどうするかが英語でわかりやすく説明されています。

ここでPC(Debian)のシェルからadbコマンドが動きNexus 5 にアクセスでき、Nexus 5にシェルでアクセスでき、さらにrootまでとれました。

$ adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
shell@hammerhead:/ $ su
root@hammerhead:/ # mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,noatime,nomblk_io_submit,noauto_da_alloc,errors=panic,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,noatime,nomblk_io_submit,noauto_da_alloc,errors=panic,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,seclabel,nosuid,nodev,relatime,nomblk_io_submit,nodelalloc,errors=panic,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
tmpfs /storage/emulated tmpfs rw,seclabel,nosuid,nodev,relatime,mode=050,gid=1028 0 0
/dev/fuse /storage/emulated/0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /storage/emulated/0/Android/obb fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /storage/emulated/legacy fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /storage/emulated/legacy/Android/obb fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
127|root@hammerhead:/ # set                                                    
ANDROID_ASSETS=/system/app
ANDROID_BOOTLOGO=1
ANDROID_DATA=/data
ANDROID_PROPERTY_WORKSPACE=9,0
ANDROID_ROOT=/system
ANDROID_SOCKET_adbd=10
ANDROID_STORAGE=/storage
ASEC_MOUNTPOINT=/mnt/asec
BASHPID=5692
BOOTCLASSPATH=/system/framework/core.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/webviewchromium.jar
COLUMNS
EMULATED_STORAGE_SOURCE=/mnt/shell/emulated
EMULATED_STORAGE_TARGET=/storage/emulated
EPOCHREALTIME=1397982119.027531
EXTERNAL_STORAGE=/storage/emulated/legacy
HOME=/
HOSTNAME=hammerhead
IFS=$' \t\n'
KSHEGID=0
KSHGID=0
KSHUID=0
KSH_VERSION='@(#)MIRBSD KSH R43 2013/02/19'
LD_LIBRARY_PATH=/vendor/lib:/system/lib
LINES
LOGNAME=root
LOOP_MOUNTPOINT=/mnt/obb
MKSH=/system/bin/sh
OPTIND=1
PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
PGRP=5692
PIPESTATUS[0]=127
PPID=5690
PS1='$(precmd)$USER@$HOSTNAME:${PWD:-?} # '
PS2='> '
PS3='#? '
PS4='+ '
PWD=/
RANDOM=7260
SECONDS=357
SHELL=/tmp-mksh/tmp-mksh
TERM=vt100
TMOUT=0
USER=root
USER_ID=0
_=set

root@hammerhead:/ # 
root@hammerhead:/ # cd /system/bin    
root@hammerhead:/system/bin # ls -la
drwxrwxrwx root     root              1970-01-26 22:38 .ext
-rwxr-xr-x root     shell      109008 2013-12-05 08:53 adb
-rwxr-xr-x root     shell         210 2013-12-05 08:53 am
-rwxr-xr-x root     shell        9560 2013-12-05 08:53 app_process
-rwxr-xr-x root     shell       53660 2013-12-05 08:53 applypatch
-rwxr-xr-x root     shell       17952 2013-12-05 08:53 atrace
-rwxr-xr-x root     shell        9456 2013-12-05 08:53 bdAddrLoader
-rwxr-xr-x root     shell        9568 2013-12-05 08:53 blkid
-rwxr-xr-x root     shell         199 2013-12-05 08:53 bmgr
-rwxr-xr-x root     shell       21852 2013-12-05 08:53 bootanimation
-rwxr-xr-x root     shell       34448 2013-12-05 08:53 bridgemgrd
-rwxr-xr-x root     shell         156 2013-12-05 08:53 bu
-rwxr-xr-x root     shell        5408 2013-12-05 08:53 bugreport
lrwxr-xr-x root     shell             2013-12-05 09:39 cat -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 chcon -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 chmod -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 chown -> toolbox
-rwxr-xr-x root     shell       21840 2013-12-05 08:53 clatd
lrwxr-xr-x root     shell             2013-12-05 09:39 clear -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 cmp -> toolbox
-rwxr-xr-x root     shell         207 2013-12-05 08:53 content
lrwxr-xr-x root     shell             2013-12-05 09:39 cp -> toolbox
-rwxr-xr-x root     shell        9504 2013-12-05 08:53 dalvikvm
lrwxr-xr-x root     shell             2013-12-05 09:39 date -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 dd -> toolbox
-rwxr-xr-x root     shell       21792 2013-12-05 08:53 debuggerd
-rwxr-xr-x root     shell       62804 2013-12-05 08:53 dex2oat
-rwxr-xr-x root     shell        9452 2013-12-05 08:53 dexopt
lrwxr-xr-x root     shell             2013-12-05 09:39 df -> toolbox
-rwxr-xr-x root     shell       67032 2013-12-05 08:53 dhcpcd
-rwxr-xr-x root     shell        5464 2013-12-05 08:53 diag_klog
-rwxr-xr-x root     shell       14264 2013-12-05 08:53 diag_mdlog
lrwxr-xr-x root     shell             2013-12-05 09:39 dmesg -> toolbox
-rwxr-xr-x root     shell      105864 2013-12-05 08:53 dnsmasq
-rwxr-xr-x root     shell       50520 2013-12-05 08:53 drmserver
-rwxr-xr-x root     shell       58848 2013-12-05 08:53 ds_fmc_appd
lrwxr-xr-x root     shell             2013-12-05 09:39 du -> toolbox
-rwxr-xr-x root     shell       42336 2013-12-05 08:53 dumpstate
-rwxr-xr-x root     shell        9500 2013-12-05 08:53 dumpsys
-rwxr-xr-x root     shell      122568 2013-12-05 08:53 e2fsck
-rwxr-xr-x root     shell       26200 2013-12-05 08:53 fsck_msdos
lrwxr-xr-x root     shell             2013-12-05 09:39 getenforce -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 getevent -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 getprop -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 getsebool -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 grep -> toolbox
-rwxr-xr-x root     shell        9500 2013-12-05 08:53 gzip
lrwxr-xr-x root     shell             2013-12-05 09:39 hd -> toolbox
-rwxr-xr-x root     shell      309828 2013-12-05 08:53 hostapd
lrwxr-xr-x root     shell             2013-12-05 09:39 id -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 ifconfig -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 iftop -> toolbox
-rwxr-xr-x root     shell         194 2013-12-05 08:53 ime
-rwxr-xr-x root     shell         201 2013-12-05 08:53 input
lrwxr-xr-x root     shell             2013-12-05 09:39 insmod -> toolbox
-rwxr-xr-x root     shell       30220 2013-12-05 08:53 installd
lrwxr-xr-x root     shell             2013-12-05 09:39 ioctl -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 ionice -> toolbox
-rwxr-xr-x root     shell      165540 2013-12-05 08:53 ip
-rwxr-xr-x root     shell      191520 2013-12-05 08:53 ip6tables
-rwxr-xr-x root     shell      196312 2013-12-05 08:53 iptables
-rwxr-xr-x root     shell        5356 2013-12-05 08:53 irsc_util
-rwxr-xr-x root     shell       38340 2013-12-05 08:53 keystore
lrwxr-xr-x root     shell             2013-12-05 09:39 kill -> toolbox
-rwxr-xr-x root     shell       63664 2013-12-05 08:53 linker
-rwxr-xr-x u0_a88   u0_a88    1103284 2014-04-19 02:18 lm.cryptsetup
-rwxr-xr-x u0_a88   u0_a88     556728 2014-04-19 02:18 lm.mkdosfs
lrwxr-xr-x root     shell             2013-12-05 09:39 ln -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 load_policy -> toolbox
lrwxrwxrwx root     root              2014-04-20 16:54 log -> toolbox
-rwxr-xr-x root     shell       13648 2013-12-05 08:53 logcat
-rwxr-xr-x root     shell       13672 2013-12-05 08:53 logwrapper
lrwxr-xr-x root     shell             2013-12-05 09:39 ls -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 lsmod -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 lsof -> toolbox
-rwxr-xr-x u0_a88   u0_a88      19362 2014-04-19 02:18 luks
-rwxr-xr-x root     shell        9568 2013-12-05 08:53 make_ext4fs
lrwxr-xr-x root     shell             2013-12-05 09:39 md5 -> toolbox
-rwxr-xr-x root     shell      255404 2013-12-05 08:53 mdnsd
-rwxr-xr-x root     shell         210 2013-12-05 08:53 media
-rwxr-xr-x root     shell       13604 2013-12-05 08:53 mediaserver
lrwxr-xr-x root     shell             2013-12-05 09:39 mkdir -> toolbox
-rwxr-xr-x root     shell      157488 2013-12-05 08:53 mksh
lrwxr-xr-x root     shell             2013-12-05 09:39 mkswap -> toolbox
-rwxr-xr-x root     shell        9576 2013-12-05 08:53 mm-jpeg-interface-test
-rwxr-xr-x root     shell       13604 2013-12-05 08:53 mm-qcamera-app
-rwxr-xr-x root     shell        9516 2013-12-05 08:53 mm-qcamera-daemon
-rwxr-xr-x root     shell         217 2013-12-05 08:53 monkey
lrwxr-xr-x root     shell             2013-12-05 09:39 mount -> toolbox
-rwxr-xr-x root     shell       26244 2013-12-05 08:53 mpdecision
-rwxr-xr-x root     shell       17912 2013-12-05 08:53 mtpd
lrwxr-xr-x root     shell             2013-12-05 09:39 mv -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 nandread -> toolbox
-rwxr-xr-x root     shell        5348 2013-12-05 08:53 ndc
-rwxr-s--- root     inet         5532 2013-12-05 08:53 netcfg
-rwxr-xr-x root     shell       83700 2013-12-05 08:53 netd
-rwxr-xr-x root     shell      117320 2013-12-05 08:53 netmgrd
lrwxr-xr-x root     shell             2013-12-05 09:39 netstat -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 newfs_msdos -> toolbox
-rwxr-xr-x root     shell        5356 2013-12-05 08:53 nl_listener
lrwxr-xr-x root     shell             2013-12-05 09:39 notify -> toolbox
-rwxr-xr-x root     shell       79272 2013-12-05 08:53 oatdump
-rwxr-xr-x root     root        26124 2013-12-05 08:53 ping
-rwxr-xr-x root     shell       30488 2013-12-05 08:53 ping6
-rwxr-xr-x root     shell         191 2013-12-05 08:53 pm
-rwxr-xr-x root     shell       17804 2013-12-05 08:53 port-bridge
-rwxr-xr-x root     shell      141924 2013-12-05 08:53 pppd
lrwxr-xr-x root     shell             2013-12-05 09:39 printenv -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 ps -> toolbox
-rwxr-xr-x root     shell       54564 2013-12-05 08:53 qmuxd
-rwxr-xr-x root     shell        5452 2013-12-05 08:53 qseecomd
-rwxr-xr-x root     shell      162768 2013-12-05 08:53 racoon
-rwxr-xr-x root     shell       25992 2013-12-05 08:53 radish
lrwxr-xr-x root     shell             2013-12-05 09:39 readlink -> toolbox
-rwxr-xr-x root     shell        5352 2013-12-05 08:53 reboot
lrwxr-xr-x root     shell             2013-12-05 09:39 renice -> toolbox
-rwxr-xr-x root     shell         188 2013-12-05 08:53 requestsync
lrwxr-xr-x root     shell             2013-12-05 09:39 restorecon -> toolbox
-rwxr-xr-x root     shell        9556 2013-12-05 08:53 rild
lrwxr-xr-x root     shell             2013-12-05 09:39 rm -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 rmdir -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 rmmod -> toolbox
-rwxr-xr-x root     shell       19408 2013-12-05 08:53 rmt_storage
lrwxr-xr-x root     shell             2013-12-05 09:39 route -> toolbox
-rwxr-x--- root     shell        9500 2013-12-05 08:53 run-as
lrwxr-xr-x root     shell             2013-12-05 09:39 runcon -> toolbox
-rwxr-xr-x root     shell        5356 2013-12-05 08:53 schedtest
lrwxr-xr-x root     shell             2013-12-05 09:39 schedtop -> toolbox
-rwxr-xr-x root     shell        9456 2013-12-05 08:53 screencap
-rwxr-xr-x root     shell       17868 2013-12-05 08:53 screenrecord
-rwxr-xr-x root     shell       38324 2013-12-05 08:53 screenshot
-rwxr-xr-x root     shell       17692 2013-12-05 08:53 sdcard
lrwxr-xr-x root     shell             2013-12-05 09:39 sendevent -> toolbox
-rwxr-xr-x root     shell      303092 2013-12-05 08:53 sensors.qcom
-rwxr-xr-x root     shell        5412 2013-12-05 08:53 sensorservice
-rwxr-xr-x root     shell        9500 2013-12-05 08:53 service
-rwxr-xr-x root     shell        9664 2013-12-05 08:53 servicemanager
lrwxr-xr-x root     shell             2013-12-05 09:39 setconsole -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 setenforce -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 setprop -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 setsebool -> toolbox
-rwxr-xr-x root     shell         178 2013-12-05 08:53 settings
lrwxr-xr-x root     shell             2013-12-05 09:39 sh -> mksh
lrwxr-xr-x root     shell             2013-12-05 09:39 sleep -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 smd -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 start -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 stop -> toolbox
-rwxr-xr-x root     shell       13876 2013-12-05 08:53 subsystem_ramdump
-rwxr-xr-x root     shell        5360 2013-12-05 08:53 surfaceflinger
-rwxr-xr-x root     shell         192 2013-12-05 08:53 svc
lrwxr-xr-x root     shell             2013-12-05 09:39 swapoff -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 swapon -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 sync -> toolbox
-rwxr-xr-x root     shell       63044 2013-12-05 08:53 tc
-rwxr-xr-x root     shell      171968 2013-12-05 08:53 thermal-engine-hh
-rwxr-xr-x root     shell       17756 2013-12-05 08:53 time_daemon
-rwxr-xr-x root     shell      139040 2013-12-05 08:53 toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 top -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 touch -> toolbox
-rwxr-xr-x root     shell        3814 2013-12-05 08:53 uiautomator
lrwxr-xr-x root     shell             2013-12-05 09:39 umount -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 uptime -> toolbox
-rwxr-xr-x root     shell        5352 2013-12-05 08:53 usbhub
-rwxr-xr-x root     shell        5356 2013-12-05 08:53 usbhub_init
-rwxr-xr-x root     shell        5348 2013-12-05 08:53 vdc
lrwxr-xr-x root     shell             2013-12-05 09:39 vmstat -> toolbox
-rwxr-xr-x root     shell       87752 2013-12-05 08:53 vold
lrwxr-xr-x root     shell             2013-12-05 09:39 watchprops -> toolbox
lrwxr-xr-x root     shell             2013-12-05 09:39 wipe -> toolbox
-rwxr-xr-x root     shell         190 2013-12-05 08:53 wm
-rwxr-xr-x root     shell      793480 2013-12-05 08:53 wpa_supplicant