Android Thingsのディベロッパーリリースが出たので起動してみた

kinneko2016-12-14

標準添付だと、画像がデカくならないな→
残念。


デカいの貼ってみる。
https://lh3.googleusercontent.com/o3sj9Dl8kviRoIkBQdAGwU5Sszb0XuhXfPtGKFLMzFranuX1VXtmTOurfvOcHUBgS1hpZFFbAB0l3OyW3IBV3BVuWEmWaWrUkA=w640-h400-no?.jpeg


すでにやっている人がいるので、だいぶ二番煎じ。

Android ThingsというヤツがRaspberry Piにやってきた(環境セットアップまで) - へもろぐ
http://sh1k1ya.hatenablog.com/entry/2016/12/14/Android_Things%E3%81%A8%E3%81%84%E3%81%86%E3%83%A4%E3%83%84%E3%81%8CRaspberry_Pi%E3%81%AB%E3%82%84%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%9F%EF%BC%88%E7%92%B0%E5%A2%83%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2


thingsってなんだろ。
Brilloとかどーなったの?名前変えただけ?
firebase必須な感じで模様替え?
Weaveは生きててthingsに含まれている感じ。


ターゲットハードのサンプルは、既存のボードを使うようになっている。
Intel Edison、NXP Pico i.MX6UL、Raspberry Pi 3向けの各システムイメージが提供されている。
数カ月後には正式版に移行する予定だそう。
これは、Googleではリファレンスハードやるつもりはないですって意味なんだろうな。
それでも、OTAでアップデートを提供するってのはすごい。


一石アンプさんに借りたRaspi3が手元にあったので試してみる。
Raspberry Pi 3 | Android Things
https://developer.android.com/things/hardware/raspberrypi.html
必要なのは、8GBのmicroSDとRaspi3。
イメージをダウンロードする。
System Image Downloads | Android Things
https://developer.android.com/things/preview/download.html

androidthings_rpi3_devpreview_1.zip
268 MB
sha1sum: 911227a3c658bf74695118df9156cb20714f79d3

Download Android Thingsという画面が出る。内容を読んで、" I have read and agree with the above terms and conditions" にチェックを入れ、ダウンロードボタンを押す。

 $ shasum androidthings_rpi3_devpreview_1.zip
911227a3c658bf74695118df9156cb20714f79d3  androidthings_rpi3_devpreview_1.zip

zipを展開。

$ unzip androidthings_rpi3_devpreview_1.zip
Archive:  androidthings_rpi3_devpreview_1.zip
warning [androidthings_rpi3_devpreview_1.zip]:  76 extra bytes at beginning or within zipfile
  (attempting to process anyway)
error [androidthings_rpi3_devpreview_1.zip]:  reported length of central directory is
  -76 bytes too long (Atari STZip zipfile?  J.H.Holm ZIPSPLIT 1.1
  zipfile?).  Compensating...
   skipping: iot_rpi3.img            need PK compat. v4.5 (can do v2.1)

note:  didn't find end-of-central-dir signature at end of central dir.
  (please check that you have transferred or created the zipfile in the
  appropriate BINARY mode and that you have compiled UnZip properly)

7zipくさいね。
The Unarchiverで展開する。
4.3GBのiot_rpi3.imgが出てくる。

$ ls -hl iot_rpi3.img
-rw-r--r--  1 kinneko  staff   4.3G 12 13 06:21 iot_rpi3.img

8GBのmicroSDに焼く。

$ df | grep /dev/disk5
/dev/disk5s1    15110144       4480  15105664     1%         0       0  100%   /Volumes/NO NAME
$ diskutil umount /Volumes/"NO NAME"
Volume NO NAME on disk5s1 unmounted
$ sudo dd if=iot_rpi3.img of=/dev/rdisk5 bs=100m


Raspi3にSDを挿入して起動する。
コンソールが数行出たあとは、スプラッシュスクリーンが出る。
androidthingsと表示。
起動には結構時間かかる。1分以上かかっているのじゃないかな。
スプラッシュスクリーンが終わると、ロゴが画面いっぱいになって、なんか表示がかぶっている。
ソフトウエアのバージョンでも出ているのか?
下には、No WiFi Connectionと、No Ethernet Connectionが表示されている。
さらに下には、developer.android.com/thingsが薄く出ている。
NICにケーブルを差し込んでみたら、しばらくして、Ethernet IP: 192.168.51.86と出た。
Androidベースとはいえ、スプラッシュを残すとか、意味がよくわからない。
thingsという割にはインプリが高級な感じ。


adbはネットワークからつなげるようだ。
OTGないから、USBからは接続できない感じ?
androidベースのメリットないな...
つなげる。

$ ./adb connect 192.168.51.86
connected to 192.168.51.86:5555

$ ./adb devices
List of devices attached
192.168.51.86:5555	device


Raspiの場合は、mdnsが動作しているので、Android.localでも引けるらしい。

$ dns-sd -G v4 Android.local
DATE: ---Wed 14 Dec 2016---
16:44:11.157  ...STARTING...
Timestamp     A/R Flags if Hostname                  Address                                      TTL
16:44:11.158  Add     2  4 Android.local.            192.168.51.86                                120

名前のアナウンスしかないね。


シェル起動して、中の見学。

$ ./adb shell
rpi3:/ $ ls
acct              fstab.rpi3           mnt               sepolicy
cache             gapps                oem               service_contexts
charger           init                 postinstall       storage
config            init.environ.rc      proc              sys
d                 init.rc              property_contexts system
data              init.rpi3.rc         root              ueventd.rc
default.prop      init.usb.configfs.rc sbin              ueventd.rpi3.rc
dev               init.usb.rc          sdcard            vendor
etc               init.zygote32.rc     seapp_contexts
file_contexts.bin lost+found           selinux_version

rpi3:/ $ uname -a
Linux localhost 4.4.19-v7+ #1 SMP PREEMPT Mon Dec 12 21:14:20 UTC 2016 armv7l

rpi3:/ $ df
Filesystem            1K-blocks   Used Available Use% Mounted on
/dev/root                507848 406996     90368  82% /
tmpfs                    381248    444    380804   1% /dev
tmpfs                    381248      0    381248   0% /mnt
/dev/block/mmcblk0p15   2539312  69024   2453904   3% /data
/dev/block/mmcblk0p11     28144     52     27440   1% /oem
/dev/block/mmcblk0p13    253920 156820     91860  64% /gapps
/dev/fuse               2539312  69024   2453904   3% /storage/emulated


書けそうなのはdataかな?

rpi3:/ $ ls /data/
ls: /data/: Permission denied

あら残念。

なら、storageは?

rpi3:/ $ cd storage
rpi3:/storage $ ls -l
total 8
drwx--x--x 4 root sdcard_rw 4096 1970-01-01 00:01 emulated
drwxr-xr-x 2 root root        60 1970-01-01 00:00 self
rpi3:/storage $ touch test
touch: 'test': Permission denied

ダメか。

sdcardには何か書けそう。

rpi3:/ $ ls -l /mnt/
total 0
drwx--x--x 2 root   root      40 1970-01-01 00:00 appfuse
drwxr-xr-x 2 root   system    40 1970-01-01 00:00 asec
drwxrwx--x 2 system system    40 1970-01-01 00:00 expand
drwxr-x--- 2 root   media_rw  40 1970-01-01 00:00 media_rw
drwxr-xr-x 2 root   system    40 1970-01-01 00:00 obb
drwx------ 5 root   root     100 1970-01-01 00:00 runtime
lrwxrwxrwx 1 root   root      21 1970-01-01 00:00 sdcard -> /storage/self/primary
drwx------ 3 root   root      60 1970-01-01 00:00 secure
drwxr-xr-x 3 root   root      60 1970-01-01 00:00 user
rpi3:/ $ ls -l /sdcard/
total 80
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 Alarms
drwxrwx--x 3 root sdcard_rw 4096 1970-01-01 00:03 Android
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 DCIM
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 Download
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 Movies
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 Music
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 Notifications
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 Pictures
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 Podcasts
drwxrwx--x 2 root sdcard_rw 4096 1970-01-01 00:01 Ringtones
rpi3:/ $ touch /sdcard/DCIM/test
rpi3:/ $ ls -l /sdcard/DCIM/test
-rw-rw---- 1 root sdcard_rw 0 2016-12-14 08:01 /sdcard/DCIM/test

書けた。
わりと普通のAndroidだな。


gappsには、なんか入ってる。

rpi3:/ $ ls /gapps/
lost+found priv-app


スクリーンキャプチャしてみるが、ダメぽ。

rpi3:/ $ screencap -p /sdcard/DCIM/screen.png
rpi3:/ $ ls -l /sdcard/DCIM/screen.png
-rw-rw---- 1 root sdcard_rw 0 2016-12-14 08:02 /sdcard/DCIM/screen.png

ファイルはできるけど、サイズゼロ。

rpi3:/ $ screencap -p -d 1 /sdcard/DCIM/screen1.png
Unable to get handle for display 1
rpi3:/ $ screencap -p -d 0 /sdcard/DCIM/screen0.png
rpi3:/ $ ls -l /sdcard/DCIM/screen*
-rw-rw---- 1 root sdcard_rw 0 2016-12-14 08:02 /sdcard/DCIM/screen.png
-rw-rw---- 1 root sdcard_rw 0 2016-12-14 08:04 /sdcard/DCIM/screen0.png
-rw-rw---- 1 root sdcard_rw 0 2016-12-14 08:04 /sdcard/DCIM/screen1.png
rpi3:/ $ screencap -p /sdcard/DCIM/screen.raw
rpi3:/ $ ls -l /sdcard/DCIM/screen.raw
-rw-rw---- 1 root sdcard_rw 0 2016-12-14 08:07 /sdcard/DCIM/screen.raw
rpi3:/ $ cat /dev/graphics/fb0 > /sdcard/DCIM/screen.raw
/system/bin/sh: cat: /dev/graphics/fb0: Permission denied
$ ./adb pull /dev/graphics/fb0
adb: error: failed to copy '/dev/graphics/fb0' to './fb0': open failed: Permission denied

当たり前か。


動画はどうだ?

rpi3:/ $ screenrecord --verbose /sdcard/DCIM/screen.mp4
Main display is 1824x984 @60.00fps (orientation=0)
Configuring recorder for 1824x984 video/avc at 4.00Mbps
Content area is 1823x984 at offset x=0 y=0
^CEncoder stopping; recorded 1 frames in 10 seconds
Stopping encoder and muxer
Executing: /system/bin/am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/DCIM/screen.mp4
Broadcasting: Intent { act=android.intent.action.MEDIA_SCANNER_SCAN_FILE dat=file:///sdcard/DCIM/screen.mp4 }
Broadcast completed: result=0
rpi3:/ $ ls -l /sdcard/DCIM/screen.mp4
-rw-rw---- 1 root sdcard_rw 26408 2016-12-14 08:14 /sdcard/DCIM/screen.mp4

なんかできてる。

$ ./adb pull /sdcard/DCIM/screen.mp4
[100%] /sdcard/DCIM/screen.mp4


init.rcを見る。
なげーよ。
起動に時間かかるわけだ。

rpi3:/ $ cat init.rc
# Copyright (C) 2012 The Android Open Source Project
#
# IMPORTANT: Do not create world writable files or directories.
# This is a common source of Android security bugs.
#

import /init.environ.rc
import /init.usb.rc
import /init.${ro.hardware}.rc
import /init.usb.configfs.rc
import /init.${ro.zygote}.rc

on early-init
    # Set init and its forked children's oom_adj.
    write /proc/1/oom_score_adj -1000

    # Disable sysrq from keyboard
    write /proc/sys/kernel/sysrq 0

    # Set the security context of /adb_keys if present.
    restorecon /adb_keys

    # Shouldn't be necessary, but sdcard won't start without it. http://b/22568628.
    mkdir /mnt 0775 root system

    # Set the security context of /postinstall if present.
    restorecon /postinstall

    start ueventd

on init
    sysclktz 0

    # Mix device-specific information into the entropy pool
    copy /proc/cmdline /dev/urandom
    copy /default.prop /dev/urandom

    # Backward compatibility.
    symlink /system/etc /etc
    symlink /sys/kernel/debug /d

    # Link /vendor to /system/vendor for devices without a vendor partition.
    symlink /system/vendor /vendor

    # Mount cgroup mount point for cpu accounting
    mount cgroup none /acct cpuacct
    mkdir /acct/uid

    # Create energy-aware scheduler tuning nodes
    mkdir /dev/stune
    mount cgroup none /dev/stune schedtune
    mkdir /dev/stune/foreground
    chown system system /dev/stune
    chown system system /dev/stune/foreground
    chown system system /dev/stune/tasks
    chown system system /dev/stune/foreground/tasks
    chmod 0664 /dev/stune/tasks
    chmod 0664 /dev/stune/foreground/tasks

    # Mount staging areas for devices managed by vold
    # See storage config details at http://source.android.com/tech/storage/
    mount tmpfs tmpfs /mnt mode=0755,uid=0,gid=1000
    restorecon_recursive /mnt

    mount configfs none /config
    chmod 0775 /config/sdcardfs
    chown system package_info /config/sdcardfs

    mkdir /mnt/secure 0700 root root
    mkdir /mnt/secure/asec 0700 root root
    mkdir /mnt/asec 0755 root system
    mkdir /mnt/obb 0755 root system
    mkdir /mnt/media_rw 0750 root media_rw
    mkdir /mnt/user 0755 root root
    mkdir /mnt/user/0 0755 root root
    mkdir /mnt/expand 0771 system system
    mkdir /mnt/appfuse 0711 root root

    # Storage views to support runtime permissions
    mkdir /mnt/runtime 0700 root root
    mkdir /mnt/runtime/default 0755 root root
    mkdir /mnt/runtime/default/self 0755 root root
    mkdir /mnt/runtime/read 0755 root root
    mkdir /mnt/runtime/read/self 0755 root root
    mkdir /mnt/runtime/write 0755 root root
    mkdir /mnt/runtime/write/self 0755 root root

    # Symlink to keep legacy apps working in multi-user world
    symlink /storage/self/primary /sdcard
    symlink /storage/self/primary /mnt/sdcard
    symlink /mnt/user/0/primary /mnt/runtime/default/self/primary

    # root memory control cgroup, used by lmkd
    mkdir /dev/memcg 0700 root system
    mount cgroup none /dev/memcg memory
    # app mem cgroups, used by activity manager, lmkd and zygote
    mkdir /dev/memcg/apps/ 0755 system system

    write /proc/sys/kernel/panic_on_oops 1
    write /proc/sys/kernel/hung_task_timeout_secs 0
    write /proc/cpu/alignment 4

    # scheduler tunables
    # Disable auto-scaling of scheduler tunables with hotplug. The tunables
    # will vary across devices in unpredictable ways if allowed to scale with
    # cpu cores.
    write /proc/sys/kernel/sched_tunable_scaling 0
    write /proc/sys/kernel/sched_latency_ns 10000000
    write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
    write /proc/sys/kernel/sched_compat_yield 1
    write /proc/sys/kernel/sched_child_runs_first 0

    write /proc/sys/kernel/randomize_va_space 2
    write /proc/sys/kernel/kptr_restrict 2
    write /proc/sys/vm/mmap_min_addr 32768
    write /proc/sys/net/ipv4/ping_group_range "0 2147483647"
    write /proc/sys/net/unix/max_dgram_qlen 600
    write /proc/sys/kernel/sched_rt_runtime_us 950000
    write /proc/sys/kernel/sched_rt_period_us 1000000

    # reflect fwmark from incoming packets onto generated replies
    write /proc/sys/net/ipv4/fwmark_reflect 1
    write /proc/sys/net/ipv6/fwmark_reflect 1

    # set fwmark on accepted sockets
    write /proc/sys/net/ipv4/tcp_fwmark_accept 1

    # disable icmp redirects
    write /proc/sys/net/ipv4/conf/all/accept_redirects 0
    write /proc/sys/net/ipv6/conf/all/accept_redirects 0

    # Create cgroup mount points for process groups
    mkdir /dev/cpuctl
    mount cgroup none /dev/cpuctl cpu
    chown system system /dev/cpuctl
    chown system system /dev/cpuctl/tasks
    chmod 0666 /dev/cpuctl/tasks
    write /dev/cpuctl/cpu.shares 1024
    write /dev/cpuctl/cpu.rt_runtime_us 800000
    write /dev/cpuctl/cpu.rt_period_us 1000000

    mkdir /dev/cpuctl/bg_non_interactive
    chown system system /dev/cpuctl/bg_non_interactive/tasks
    chmod 0666 /dev/cpuctl/bg_non_interactive/tasks
    # 5.0 %
    write /dev/cpuctl/bg_non_interactive/cpu.shares 52
    write /dev/cpuctl/bg_non_interactive/cpu.rt_runtime_us 700000
    write /dev/cpuctl/bg_non_interactive/cpu.rt_period_us 1000000

    # sets up initial cpusets for ActivityManager
    mkdir /dev/cpuset
    mount cpuset none /dev/cpuset

    # this ensures that the cpusets are present and usable, but the device's
    # init.rc must actually set the correct cpus
    mkdir /dev/cpuset/foreground
    write /dev/cpuset/foreground/cpus 0
    write /dev/cpuset/foreground/mems 0
    mkdir /dev/cpuset/foreground/boost
    write /dev/cpuset/foreground/boost/cpus 0
    write /dev/cpuset/foreground/boost/mems 0
    mkdir /dev/cpuset/background
    write /dev/cpuset/background/cpus 0
    write /dev/cpuset/background/mems 0

    # system-background is for system tasks that should only run on
    # little cores, not on bigs
    # to be used only by init, so don't change system-bg permissions
    mkdir /dev/cpuset/system-background
    write /dev/cpuset/system-background/cpus 0
    write /dev/cpuset/system-background/mems 0

    mkdir /dev/cpuset/top-app
    write /dev/cpuset/top-app/cpus 0
    write /dev/cpuset/top-app/mems 0

    # change permissions for all cpusets we'll touch at runtime
    chown system system /dev/cpuset
    chown system system /dev/cpuset/foreground
    chown system system /dev/cpuset/foreground/boost
    chown system system /dev/cpuset/background
    chown system system /dev/cpuset/system-background
    chown system system /dev/cpuset/top-app
    chown system system /dev/cpuset/tasks
    chown system system /dev/cpuset/foreground/tasks
    chown system system /dev/cpuset/foreground/boost/tasks
    chown system system /dev/cpuset/background/tasks
    chown system system /dev/cpuset/system-background/tasks
    chown system system /dev/cpuset/top-app/tasks

    # set system-background to 0775 so SurfaceFlinger can touch it
    chmod 0775 /dev/cpuset/system-background

    chmod 0664 /dev/cpuset/foreground/tasks
    chmod 0664 /dev/cpuset/foreground/boost/tasks
    chmod 0664 /dev/cpuset/background/tasks
    chmod 0664 /dev/cpuset/system-background/tasks
    chmod 0664 /dev/cpuset/top-app/tasks
    chmod 0664 /dev/cpuset/tasks


    # qtaguid will limit access to specific data based on group memberships.
    #   net_bw_acct grants impersonation of socket owners.
    #   net_bw_stats grants access to other apps' detailed tagged-socket stats.
    chown root net_bw_acct /proc/net/xt_qtaguid/ctrl
    chown root net_bw_stats /proc/net/xt_qtaguid/stats

    # Allow everybody to read the xt_qtaguid resource tracking misc dev.
    # This is needed by any process that uses socket tagging.
    chmod 0644 /dev/xt_qtaguid

    # Create location for fs_mgr to store abbreviated output from filesystem
    # checker programs.
    mkdir /dev/fscklogs 0770 root system

    # pstore/ramoops previous console log
    mount pstore pstore /sys/fs/pstore
    chown system log /sys/fs/pstore/console-ramoops
    chmod 0440 /sys/fs/pstore/console-ramoops
    chown system log /sys/fs/pstore/pmsg-ramoops-0
    chmod 0440 /sys/fs/pstore/pmsg-ramoops-0

    # enable armv8_deprecated instruction hooks
    write /proc/sys/abi/swp 1

    # Linux's execveat() syscall may construct paths containing /dev/fd
    # expecting it to point to /proc/self/fd
    symlink /proc/self/fd /dev/fd

# Healthd can trigger a full boot from charger mode by signaling this
# property when the power button is held.
on property:sys.boot_from_charger_mode=1
    class_stop charger
    trigger late-init

# Load properties from /system/ + /factory after fs mount.
on load_system_props_action
    load_system_props

on load_persist_props_action
    load_persist_props
    start logd
    start logd-reinit

# Indicate to fw loaders that the relevant mounts are up.
on firmware_mounts_complete
    rm /dev/.booting

# Mount filesystems and start core system services.
on late-init
    trigger early-fs
    trigger fs
    trigger post-fs

    # Load properties from /system/ + /factory after fs mount. Place
    # this in another action so that the load will be scheduled after the prior
    # issued fs triggers have completed.
    trigger load_system_props_action

    # Now we can mount /data. File encryption requires keymaster to decrypt
    # /data, which in turn can only be loaded when system properties are present
    trigger post-fs-data
    trigger load_persist_props_action

    # Remove a file to wake up anything waiting for firmware.
    trigger firmware_mounts_complete

    trigger early-boot
    trigger boot


on post-fs
    start logd
    # once everything is setup, no need to modify /
    mount rootfs rootfs / ro remount
    # Mount shared so changes propagate into child namespaces
    mount rootfs rootfs / shared rec
    # Mount default storage into root namespace
    mount none /mnt/runtime/default /storage slave bind rec

    # Make sure /sys/kernel/debug (if present) is labeled properly
    restorecon_recursive /sys/kernel/debug

    # We chown/chmod /cache again so because mount is run as root + defaults
    chown system cache /cache
    chmod 0770 /cache
    # We restorecon /cache in case the cache partition has been reset.
    restorecon_recursive /cache

    # Create /cache/recovery in case it's not there. It'll also fix the odd
    # permissions if created by the recovery system.
    mkdir /cache/recovery 0770 system cache

    # Backup/restore mechanism uses the cache partition
    mkdir /cache/backup_stage 0700 system system
    mkdir /cache/backup 0700 system system

    #change permissions on vmallocinfo so we can grab it from bugreports
    chown root log /proc/vmallocinfo
    chmod 0440 /proc/vmallocinfo

    chown root log /proc/slabinfo
    chmod 0440 /proc/slabinfo

    #change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks
    chown root system /proc/kmsg
    chmod 0440 /proc/kmsg
    chown root system /proc/sysrq-trigger
    chmod 0220 /proc/sysrq-trigger
    chown system log /proc/last_kmsg
    chmod 0440 /proc/last_kmsg

    # make the selinux kernel policy world-readable
    chmod 0444 /sys/fs/selinux/policy

    # create the lost+found directories, so as to enforce our permissions
    mkdir /cache/lost+found 0770 root root

on post-fs-data
    # We chown/chmod /data again so because mount is run as root + defaults
    chown system system /data
    chmod 0771 /data
    # We restorecon /data in case the userdata partition has been reset.
    restorecon /data

    # start debuggerd to make debugging early-boot crashes easier.
    start debuggerd
    start debuggerd64

    # Make sure we have the device encryption key.
    start vold
    installkey /data

    # Start bootcharting as soon as possible after the data partition is
    # mounted to collect more data.
    mkdir /data/bootchart 0755 shell shell
    bootchart_init

    # Avoid predictable entropy pool. Carry over entropy from previous boot.
    copy /data/system/entropy.dat /dev/urandom

    # create basic filesystem structure
    mkdir /data/misc 01771 system misc
    mkdir /data/misc/bluedroid 02770 bluetooth net_bt_stack
    # Fix the access permissions and group ownership for 'bt_config.conf'
    chmod 0660 /data/misc/bluedroid/bt_config.conf
    chown bluetooth net_bt_stack /data/misc/bluedroid/bt_config.conf
    mkdir /data/misc/bluetooth 0770 system system
    mkdir /data/misc/keystore 0700 keystore keystore
    mkdir /data/misc/gatekeeper 0700 system system
    mkdir /data/misc/keychain 0771 system system
    mkdir /data/misc/net 0750 root shell
    mkdir /data/misc/radio 0770 system radio
    mkdir /data/misc/sms 0770 system radio
    mkdir /data/misc/zoneinfo 0775 system system
    mkdir /data/misc/vpn 0770 system vpn
    mkdir /data/misc/shared_relro 0771 shared_relro shared_relro
    mkdir /data/misc/systemkeys 0700 system system
    mkdir /data/misc/wifi 0770 wifi wifi
    mkdir /data/misc/wifi/sockets 0770 wifi wifi
    mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
    mkdir /data/misc/ethernet 0770 system system
    mkdir /data/misc/dhcp 0770 dhcp dhcp
    mkdir /data/misc/user 0771 root root
    mkdir /data/misc/perfprofd 0775 root root
    # give system access to wpa_supplicant.conf for backup and restore
    chmod 0660 /data/misc/wifi/wpa_supplicant.conf
    mkdir /data/local 0751 root root
    mkdir /data/misc/media 0700 media media
    mkdir /data/misc/audioserver 0700 audioserver audioserver
    mkdir /data/misc/cameraserver 0700 cameraserver cameraserver
    mkdir /data/misc/vold 0700 root root
    mkdir /data/misc/boottrace 0771 system shell
    mkdir /data/misc/update_engine 0700 root root
    mkdir /data/misc/trace 0700 root root
    # profile file layout
    mkdir /data/misc/profiles 0771 system system
    mkdir /data/misc/profiles/cur 0771 system system
    mkdir /data/misc/profiles/ref 0771 system system
    mkdir /data/misc/profman 0770 system shell

    # For security reasons, /data/local/tmp should always be empty.
    # Do not place files or directories in /data/local/tmp
    mkdir /data/local/tmp 0771 shell shell
    mkdir /data/data 0771 system system
    mkdir /data/app-private 0771 system system
    mkdir /data/app-ephemeral 0771 system system
    mkdir /data/app-asec 0700 root root
    mkdir /data/app-lib 0771 system system
    mkdir /data/app 0771 system system
    mkdir /data/property 0700 root root
    mkdir /data/tombstones 0771 system system

    # create dalvik-cache, so as to enforce our permissions
    mkdir /data/dalvik-cache 0771 root root
    # create the A/B OTA directory, so as to enforce our permissions
    mkdir /data/ota 0771 root root

    # create resource-cache and double-check the perms
    mkdir /data/resource-cache 0771 system system
    chown system system /data/resource-cache
    chmod 0771 /data/resource-cache

    # create the lost+found directories, so as to enforce our permissions
    mkdir /data/lost+found 0770 root root

    # create directory for DRM plug-ins - give drm the read/write access to
    # the following directory.
    mkdir /data/drm 0770 drm drm

    # create directory for MediaDrm plug-ins - give drm the read/write access to
    # the following directory.
    mkdir /data/mediadrm 0770 mediadrm mediadrm

    mkdir /data/anr 0775 system system

    # symlink to bugreport storage location
    rm /data/bugreports
    symlink /data/user_de/0/com.android.shell/files/bugreports /data/bugreports

    # Separate location for storing security policy files on data
    mkdir /data/security 0711 system system

    # Create all remaining /data root dirs so that they are made through init
    # and get proper encryption policy installed
    mkdir /data/backup 0700 system system
    mkdir /data/ss 0700 system system

    mkdir /data/system 0775 system system
    mkdir /data/system/heapdump 0700 system system
    mkdir /data/system/users 0775 system system

    mkdir /data/system_de 0770 system system
    mkdir /data/system_ce 0770 system system

    mkdir /data/misc_de 01771 system misc
    mkdir /data/misc_ce 01771 system misc

    mkdir /data/user 0711 system system
    mkdir /data/user_de 0711 system system
    symlink /data/data /data/user/0

    mkdir /data/media 0770 media_rw media_rw
    mkdir /data/media/obb 0770 media_rw media_rw

    init_user0

    # Reload policy from /data/security if present.
    setprop selinux.reload_policy 1

    # Set SELinux security contexts on upgrade or policy update.
    restorecon_recursive /data

    # Check any timezone data in /data is newer than the copy in /system, delete if not.
    exec - system system -- /system/bin/tzdatacheck /system/usr/share/zoneinfo /data/misc/zoneinfo

    # If there is no fs-post-data action in the init.<device>.rc file, you
    # must uncomment this line, otherwise encrypted filesystems
    # won't work.
    # Set indication (checked by vold) that we have finished this action
    #setprop vold.post_fs_data_done 1

on boot
    # basic network init
    ifup lo
    hostname localhost
    domainname localdomain

    # set RLIMIT_NICE to allow priorities from 19 to -20
    setrlimit 13 40 40

    # Memory management.  Basic kernel parameters, and allow the high
    # level system server to be able to adjust the kernel OOM driver
    # parameters to match how it is managing things.
    write /proc/sys/vm/overcommit_memory 1
    write /proc/sys/vm/min_free_order_shift 4
    chown root system /sys/module/lowmemorykiller/parameters/adj
    chmod 0664 /sys/module/lowmemorykiller/parameters/adj
    chown root system /sys/module/lowmemorykiller/parameters/minfree
    chmod 0664 /sys/module/lowmemorykiller/parameters/minfree

    # Tweak background writeout
    write /proc/sys/vm/dirty_expire_centisecs 200
    write /proc/sys/vm/dirty_background_ratio  5

    # Permissions for System Server and daemons.
    chown radio system /sys/android_power/state
    chown radio system /sys/android_power/request_state
    chown radio system /sys/android_power/acquire_full_wake_lock
    chown radio system /sys/android_power/acquire_partial_wake_lock
    chown radio system /sys/android_power/release_wake_lock
    chown system system /sys/power/autosleep
    chown system system /sys/power/state
    chown system system /sys/power/wakeup_count
    chown radio wakelock /sys/power/wake_lock
    chown radio wakelock /sys/power/wake_unlock
    chmod 0660 /sys/power/state
    chmod 0660 /sys/power/wake_lock
    chmod 0660 /sys/power/wake_unlock

    chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate
    chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_slack
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_slack
    chown system system /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
    chown system system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
    chown system system /sys/devices/system/cpu/cpufreq/interactive/target_loads
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/target_loads
    chown system system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
    chown system system /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
    chown system system /sys/devices/system/cpu/cpufreq/interactive/boost
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boost
    chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse
    chown system system /sys/devices/system/cpu/cpufreq/interactive/input_boost
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/input_boost
    chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration
    chown system system /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/io_is_busy

    # Assume SMP uses shared cpufreq policy for all CPUs
    chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

    chown system system /sys/class/timed_output/vibrator/enable
    chown system system /sys/class/leds/keyboard-backlight/brightness
    chown system system /sys/class/leds/lcd-backlight/brightness
    chown system system /sys/class/leds/button-backlight/brightness
    chown system system /sys/class/leds/jogball-backlight/brightness
    chown system system /sys/class/leds/red/brightness
    chown system system /sys/class/leds/green/brightness
    chown system system /sys/class/leds/blue/brightness
    chown system system /sys/class/leds/red/device/grpfreq
    chown system system /sys/class/leds/red/device/grppwm
    chown system system /sys/class/leds/red/device/blink
    chown system system /sys/class/timed_output/vibrator/enable
    chown system system /sys/module/sco/parameters/disable_esco
    chown system system /sys/kernel/ipv4/tcp_wmem_min
    chown system system /sys/kernel/ipv4/tcp_wmem_def
    chown system system /sys/kernel/ipv4/tcp_wmem_max
    chown system system /sys/kernel/ipv4/tcp_rmem_min
    chown system system /sys/kernel/ipv4/tcp_rmem_def
    chown system system /sys/kernel/ipv4/tcp_rmem_max
    chown root radio /proc/cmdline

    # Define default initial receive window size in segments.
    setprop net.tcp.default_init_rwnd 60

    class_start core

on nonencrypted
    # A/B update verifier that marks a successful boot.
    exec - root -- /system/bin/update_verifier nonencrypted
    class_start main
    class_start late_start

on property:sys.init_log_level=*
    loglevel ${sys.init_log_level}

on charger
    class_start charger

on property:vold.decrypt=trigger_reset_main
    class_reset main

on property:vold.decrypt=trigger_load_persist_props
    load_persist_props
    start logd
    start logd-reinit

on property:vold.decrypt=trigger_post_fs_data
    trigger post-fs-data

on property:vold.decrypt=trigger_restart_min_framework
    # A/B update verifier that marks a successful boot.
    exec - root -- /system/bin/update_verifier trigger_restart_min_framework
    class_start main

on property:vold.decrypt=trigger_restart_framework
    # A/B update verifier that marks a successful boot.
    exec - root -- /system/bin/update_verifier trigger_restart_framework
    class_start main
    class_start late_start

on property:vold.decrypt=trigger_shutdown_framework
    class_reset late_start
    class_reset main

on property:sys.powerctl=*
    powerctl ${sys.powerctl}

# system server cannot write to /proc/sys files,
# and chown/chmod does not work for /proc/sys/ entries.
# So proxy writes through init.
on property:sys.sysctl.extra_free_kbytes=*
    write /proc/sys/vm/extra_free_kbytes ${sys.sysctl.extra_free_kbytes}

# "tcp_default_init_rwnd" Is too long!
on property:sys.sysctl.tcp_def_init_rwnd=*
    write /proc/sys/net/ipv4/tcp_default_init_rwnd ${sys.sysctl.tcp_def_init_rwnd}

on property:security.perf_harden=0
    write /proc/sys/kernel/perf_event_paranoid 1

on property:security.perf_harden=1
    write /proc/sys/kernel/perf_event_paranoid 3

## Daemon processes to be run by init.
##
service ueventd /sbin/ueventd
    class core
    critical
    seclabel u:r:ueventd:s0

service healthd /sbin/healthd
    class core
    critical
    seclabel u:r:healthd:s0
    group root system wakelock

service console /system/bin/sh
    class core
    console
    disabled
    user shell
    group shell log readproc
    seclabel u:r:shell:s0

on property:ro.debuggable=1
    # Give writes to anyone for the trace folder on debug builds.
    # The folder is used to store method traces.
    chmod 0773 /data/misc/trace
    start console

service flash_recovery /system/bin/install-recovery.sh
    class main
    oneshot
rpi3:/ $ cat init.rpi3.rc
#
# Copyright 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

on fs
  mount_all /fstab.${ro.hardware}

service dhcpcd_wlan0 /system/bin/dhcpcd -dABKL
    group dhcp
    disabled
    oneshot

service wpa_supplicant /system/bin/wpa_supplicant \
        -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
        -I/system/etc/wifi/wpa_supplicant_overlay.conf \
        -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot


dmesgしてみると、こんなのがあった。

[    1.960785] IR NEC protocol handler initialized
[    1.960806] IR RC5(x/sz) protocol handler initialized
[    1.960826] IR RC6 protocol handler initialized
[    1.960845] IR JVC protocol handler initialized
[    1.960864] IR Sony protocol handler initialized
[    1.960883] IR SANYO protocol handler initialized
[    1.960903] IR Sharp protocol handler initialized
[    1.960924] IR MCE Keyboard/mouse protocol handler initialized
[    1.960943] IR XMP protocol handler initialized

赤外制御に対応している模様。


長いけど、全部つけとくか。

rpi3:/ $ dmesg
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.19-v7+ (android-build@vpeb11.mtv.corp.google.com) (gcc version 4.9 20150123 (prerelease) (GCC) ) #1 SMP PREEMPT Mon Dec 12 21:14:20 UTC 2016
[    0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: Raspberry Pi 3 Model B Rev 1.2
[    0.000000] Truncating RAM at 0x00000000-0x3b000000 to -0x30000000
[    0.000000] Consider using a HIGHMEM enabled kernel.
[    0.000000] cma: Reserved 8 MiB at 0x2f400000
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] On node 0 totalpages: 196608
[    0.000000] free_area_init_node: node 0, pgdat c10a1640, node_mem_map eed40000
[    0.000000]   Normal zone: 1728 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 196608 pages, LIFO batch:31
[    0.000000] [bcm2709_smp_init_cpus] enter (1015a0->f3003010)
[    0.000000] [bcm2709_smp_init_cpus] ncores=4
[    0.000000] PERCPU: Embedded 11 pages/cpu @effb6000 s23232 r0 d21824 u45056
[    0.000000] pcpu-alloc: s23232 r0 d21824 u45056 alloc=11*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 194880
[    0.000000] Kernel command line: 8250.nr_uarts=1 dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2709.boardrev=0xa02082 bcm2709.serial=0x9e199182 smsc95xx.macaddr=B8:27:EB:19:91:82 bcm2708_fb.fbdepth=16 bcm2708_fb.fbswap=1 bcm2709.uart_clock=48000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000  dwc_otg.lpm_enable=0 console=ttyAMA0,115200 root=/dev/mmcblk0p6 androidboot.slot_suffix=_a ro rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait earlyprintk init=/init androidboot.hardware=rpi3 noinitrd androidboot.selinux=permissive
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 753284K/786432K available (10956K kernel code, 681K rwdata, 2696K rodata, 1024K init, 880K bss, 24956K reserved, 8192K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0e553f0   (14645 kB)
[    0.000000]       .init : 0xc0f00000 - 0xc1000000   (1024 kB)
[    0.000000]       .data : 0xc1000000 - 0xc10aa7f4   ( 682 kB)
[    0.000000]        .bss : 0xc10ad000 - 0xc118903c   ( 881 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] 	Build-time adjustment of leaf fanout to 32.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] Architected cp15 timer(s) running at 19.20MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[    0.000009] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[    0.000028] Switching to timer-based delay loop, resolution 52ns
[    0.000198] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[    0.000227] pid_max: default: 32768 minimum: 301
[    0.000336] Security Framework initialized
[    0.000357] SELinux:  Initializing.
[    0.000411] SELinux:  Starting in permissive mode
[    0.000673] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000693] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.001852] Disabling cpuset control group subsystem
[    0.001891] Initializing cgroup subsys io
[    0.001925] Initializing cgroup subsys memory
[    0.001976] Initializing cgroup subsys devices
[    0.002002] Initializing cgroup subsys freezer
[    0.002027] Initializing cgroup subsys debug
[    0.002094] CPU: Testing write buffer coherency: ok
[    0.002165] ftrace: allocating 30779 entries in 91 pages
[    0.082942] CPU0: update cpu_capacity 1024
[    0.082977] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.082993] [bcm2709_smp_prepare_cpus] enter
[    0.083131] Setting up static identity map for 0x100000 - 0x100034
[    0.162347] [bcm2709_boot_secondary] cpu:1 started (0) 17
[    0.162527] [bcm2709_secondary_init] enter cpu:1
[    0.162567] CPU1: update cpu_capacity 1024
[    0.162575] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.192392] [bcm2709_boot_secondary] cpu:2 started (0) 16
[    0.192541] [bcm2709_secondary_init] enter cpu:2
[    0.192563] CPU2: update cpu_capacity 1024
[    0.192571] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.222450] [bcm2709_boot_secondary] cpu:3 started (0) 16
[    0.222589] [bcm2709_secondary_init] enter cpu:3
[    0.222611] CPU3: update cpu_capacity 1024
[    0.222618] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.222692] Brought up 4 CPUs
[    0.222720] SMP: Total of 4 processors activated (153.60 BogoMIPS).
[    0.222731] CPU: All CPU(s) started in HYP mode.
[    0.222741] CPU: Virtualization extensions available.
[    0.223787] devtmpfs: initialized
[    0.240062] VFP support v0.3: implementor 41 architecture 3 part 40 variant 3 rev 4
[    0.240471] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.241274] pinctrl core: initialized pinctrl subsystem
[    0.241916] NET: Registered protocol family 16
[    0.248095] DMA: preallocated 4096 KiB pool for atomic coherent allocations
[    0.258795] bcm2709: Mini UART enabled
[    0.258848] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.258861] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.259030] Serial: AMBA PL011 UART driver
[    0.259211] uart-pl011 3f201000.uart: could not find pctldev for node /soc/gpio@7e200000/uart0_pins, deferring probe
[    0.259416] bcm2835-mbox 3f00b880.mailbox: mailbox enabled
[    0.356015] bcm2835-dma 3f007000.dma: DMA legacy API manager at f3007000, dmachans=0x1
[    0.356767] SCSI subsystem initialized
[    0.357165] usbcore: registered new interface driver usbfs
[    0.357249] usbcore: registered new interface driver hub
[    0.357371] usbcore: registered new device driver usb
[    0.357602] media: Linux media interface: v0.10
[    0.357688] Linux video capture interface: v2.00
[    0.362767] raspberrypi-firmware soc:firmware: Attached to firmware from 2016-09-14 20:00
[    0.372949] Advanced Linux Sound Architecture Driver Initialized.
[    0.376427] clocksource: Switched to clocksource arch_sys_counter
[    0.470779] FS-Cache: Loaded
[    0.471117] CacheFiles: Loaded
[    0.473095] NET: Registered protocol family 2
[    0.473917] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.474050] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.474242] TCP: Hash tables configured (established 8192 bind 8192)
[    0.474349] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.474399] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.474691] NET: Registered protocol family 1
[    0.475154] RPC: Registered named UNIX socket transport module.
[    0.475168] RPC: Registered udp transport module.
[    0.475179] RPC: Registered tcp transport module.
[    0.475190] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.477331] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 7 counters available
[    0.479052] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.479185] audit: initializing netlink subsys (disabled)
[    0.479246] audit: type=2000 audit(0.439:1): initialized
[    0.496316] VFS: Disk quotas dquot_6.6.0
[    0.496745] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.499615] FS-Cache: Netfs 'nfs' registered for caching
[    0.500720] NFS: Registering the id_resolver key type
[    0.500774] Key type id_resolver registered
[    0.500787] Key type id_legacy registered
[    0.501142] fuse init (API version 7.23)
[    0.503064] SELinux:  Registering netfilter hooks
[    0.509278] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.509450] io scheduler noop registered
[    0.509470] io scheduler deadline registered (default)
[    0.509535] io scheduler cfq registered
[    0.511522] clk: couldn't get clock 0 for /soc/pwm@7e20c000
[    0.513080] BCM2708FB: allocated DMA memory ef800000
[    0.513111] BCM2708FB: allocated DMA channel 0 @ f3007000
[    0.514365] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[    0.516624] 3f215040.uart: ttyS0 at MMIO 0x3f215040 (irq = 59, base_baud = 50000000) is a 16550
[    1.512858] bcm2835-rng 3f104000.rng: hwrng registered
[    1.512995] vc-cma: Videocore CMA driver
[    1.513008] vc-cma: vc_cma_base      = 0x00000000
[    1.513019] vc-cma: vc_cma_size      = 0x00000000 (0 MiB)
[    1.513031] vc-cma: vc_cma_initial   = 0x00000000 (0 MiB)
[    1.513310] vc-mem: phys_addr:0x00000000 mem_base=0x3dc00000 mem_size:0x3f000000(1008 MiB)
[    1.514265] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000
[    1.533112] brd: module loaded
[    1.543983] loop: module loaded
[    1.545239] vchiq: vchiq_init_state: slot_zero = 0xef880000, is_master = 0
[    1.546822] Loading iSCSI transport class v2.0-870.
[    1.549937] tun: Universal TUN/TAP device driver, 1.6
[    1.549952] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[    1.550238] PPP generic driver version 2.4.2
[    1.550501] PPP BSD Compression module registered
[    1.550523] PPP Deflate Compression module registered
[    1.550558] PPP MPPE Compression module registered
[    1.550580] NET: Registered protocol family 24
[    1.550878] usbcore: registered new interface driver brcmfmac
[    1.550977] usbcore: registered new interface driver asix
[    1.551069] usbcore: registered new interface driver ax88179_178a
[    1.551159] usbcore: registered new interface driver cdc_ether
[    1.551257] usbcore: registered new interface driver smsc95xx
[    1.551347] usbcore: registered new interface driver net1080
[    1.551438] usbcore: registered new interface driver cdc_subset
[    1.551528] usbcore: registered new interface driver zaurus
[    1.551650] usbcore: registered new interface driver cdc_ncm
[    1.551673] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.551697] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[    1.752021] Core Release: 2.80a
[    1.752047] Setting default values for core params
[    1.752082] Finished setting default values for core params
[    1.952485] Using Buffer DMA mode
[    1.952498] Periodic Transfer Interrupt Enhancement - disabled
[    1.952509] Multiprocessor Interrupt Enhancement - disabled
[    1.952520] OTG VER PARAM: 0, OTG VER FLAG: 0
[    1.952535] Dedicated Tx FIFOs mode
[    1.952870] WARN::dwc_otg_hcd_init:1047: FIQ DMA bounce buffers: virt = 0xef814000 dma = 0xef814000 len=9024
[    1.952903] FIQ FSM acceleration enabled for :
[    1.952903] Non-periodic Split Transactions
[    1.952903] Periodic Split Transactions
[    1.952903] High-Speed Isochronous Endpoints
[    1.952903] Interrupt/Control Split Transaction hack enabled
[    1.952930] dwc_otg: Microframe scheduler enabled
[    1.952991] WARN::hcd_init_fiq:413: FIQ on core 1 at 0xc05f47d0
[    1.953009] WARN::hcd_init_fiq:414: FIQ ASM at 0xc05f4b40 length 36
[    1.953028] WARN::hcd_init_fiq:439: MPHI regs_base at 0xf0c12000
[    1.953103] dwc_otg 3f980000.usb: DWC OTG Controller
[    1.953143] dwc_otg 3f980000.usb: new USB bus registered, assigned bus number 1
[    1.953183] dwc_otg 3f980000.usb: irq 62, io mem 0x00000000
[    1.953238] Init: Port Power? op_state=1
[    1.953248] Init: Power Port (0)
[    1.953527] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.953545] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.953560] usb usb1: Product: DWC OTG Controller
[    1.953574] usb usb1: Manufacturer: Linux 4.4.19-v7+ dwc_otg_hcd
[    1.953588] usb usb1: SerialNumber: 3f980000.usb
[    1.954506] hub 1-0:1.0: USB hub found
[    1.954562] hub 1-0:1.0: 1 port detected
[    1.955267] dwc_otg: FIQ enabled
[    1.955280] dwc_otg: NAK holdoff enabled
[    1.955290] dwc_otg: FIQ split-transaction FSM enabled
[    1.955330] Module dwc_common_port init
[    1.955628] usbcore: registered new interface driver usb-storage
[    1.955798] usbcore: registered new interface driver usbserial
[    1.955870] usbcore: registered new interface driver usbserial_generic
[    1.955937] usbserial: USB Serial support registered for generic
[    1.956014] usbcore: registered new interface driver ftdi_sio
[    1.956080] usbserial: USB Serial support registered for FTDI USB Serial Device
[    1.956739] mousedev: PS/2 mouse device common for all mice
[    1.956845] usbcore: registered new interface driver xpad
[    1.956935] usbcore: registered new interface driver usb_acecad
[    1.957024] usbcore: registered new interface driver aiptek
[    1.957120] usbcore: registered new interface driver gtco
[    1.957208] usbcore: registered new interface driver hanwang
[    1.957295] usbcore: registered new interface driver kbtab
[    1.958166] i2c /dev entries driver
[    1.958883] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 83) (baudrate 100000)
[    1.960785] IR NEC protocol handler initialized
[    1.960806] IR RC5(x/sz) protocol handler initialized
[    1.960826] IR RC6 protocol handler initialized
[    1.960845] IR JVC protocol handler initialized
[    1.960864] IR Sony protocol handler initialized
[    1.960883] IR SANYO protocol handler initialized
[    1.960903] IR Sharp protocol handler initialized
[    1.960924] IR MCE Keyboard/mouse protocol handler initialized
[    1.960943] IR XMP protocol handler initialized
[    1.978647] gspca_main: v2.14.0 registered
[    1.979838] device-mapper: uevent: version 1.0.3
[    1.980462] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com
[    1.980838] bcm2835-cpufreq: min=600000 max=1200000
[    1.981203] sdhci: Secure Digital Host Controller Interface driver
[    1.981215] sdhci: Copyright(c) Pierre Ossman
[    1.981590] sdhost: log_buf @ ef813000 (ef813000)
[    2.056563] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
[    2.079076] mmc-bcm2835 3f300000.mmc: mmc_debug:0 mmc_debug2:0
[    2.079093] mmc-bcm2835 3f300000.mmc: DMA channel allocated
[    2.113666] mmc0: host does not support reading read-only switch, assuming write-enable
[    2.115677] mmc0: new high speed SDHC card at address 0007
[    2.116389] mmcblk0: mmc0:0007 SD8GB 7.21 GiB
[    2.116584] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.117096] hidraw: raw HID events driver (C) Jiri Kosina
[    2.121813] usbcore: registered new interface driver usbhid
[    2.121825] usbhid: USB HID core driver
[    2.122239] ashmem: initialized
[    2.125710] u32 classifier
[    2.125725]     Actions configured
[    2.125755] Netfilter messages via NETLINK v0.30.
[    2.125875] nf_conntrack version 0.5.0 (11898 buckets, 47592 max)
[    2.127033] ctnetlink v0.93: registering with nfnetlink.
[    2.128213] xt_time: kernel timezone is -0000
[    2.128819] ip_tables: (C) 2000-2006 Netfilter Core Team
[    2.129129] arp_tables: (C) 2002 David S. Miller
[    2.129212] Initializing XFRM netlink socket
[    2.130933] NET: Registered protocol family 10
[    2.132096] GPT:Primary header thinks Alt. header is not at the end of the disk.
[    2.132112] GPT:8912895 != 15126527
[    2.132123] GPT:Alternate GPT header not at the end of the disk.
[    2.132134] GPT:8912895 != 15126527
[    2.132144] GPT: Use GNU Parted to correct GPT errors.
[    2.132267]  mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15
[    2.132536] mip6: Mobile IPv6
[    2.132586] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    2.132875] sit: IPv6 over IPv4 tunneling driver
[    2.134044] NET: Registered protocol family 17
[    2.134091] NET: Registered protocol family 15
[    2.134240] Key type dns_resolver registered
[    2.135589] Registering SWP/SWPB emulation handler
[    2.136776] registered taskstats version 1
[    2.136989] vc-sm: Videocore shared memory driver
[    2.137007] [vc_sm_connected_init]: start
[    2.137564] [vc_sm_connected_init]: end - returning 0
[    2.138060] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 87, base_baud = 0) is a PL011 rev2
[    2.153582] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[    2.155168] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.156589] Indeed it is in host mode hprt0 = 00021501
[    2.156771] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.159605] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[    2.253830] mmc1: new high speed SDIO card at address 0001
[    2.346524] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    2.346690] Indeed it is in host mode hprt0 = 00001101
[    2.353880] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Dec 15 2015 18:10:45 version 7.45.41.23 (r606571) FWID 01-cc4eda9c
[    2.375833] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
[    2.546784] usb 1-1: New USB device found, idVendor=0424, idProduct=9514
[    2.546795] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.548531] hub 1-1:1.0: USB hub found
[    2.548628] hub 1-1:1.0: 5 ports detected
[    2.826457] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[    2.926718] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    2.926728] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.929910] smsc95xx v1.0.4
[    2.990278] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:19:91:82
[    3.689988] console [ttyAMA0] enabled
[    3.694603] otg_wakelock_init: No USB transceiver found
[    3.699873] of_cfs_init
[    3.702371] of_cfs_init: OK
[    3.714228] ALSA device list:
[    3.717255]   #0: bcm2835 ALSA
[    3.720540] uart-pl011 3f201000.uart: no DMA platform data
[    3.748926] EXT4-fs (mmcblk0p6): mounted filesystem with ordered data mode. Opts: (null)
[    3.757108] VFS: Mounted root (ext4 filesystem) readonly on device 179:6.
[    3.764866] devtmpfs: mounted
[    3.769811] Freeing unused kernel memory: 1024K (c0f00000 - c1000000)
[    3.820337] init: init first stage started!
[    3.845184] SELinux: 2048 avtab hash slots, 6909 rules.
[    3.855323] SELinux: 2048 avtab hash slots, 6909 rules.
[    3.855361] SELinux:  1 users, 2 roles, 671 types, 0 bools, 1 sens, 1024 cats
[    3.855384] SELinux:  63 classes, 6909 rules
[    3.858842] SELinux:  Completing initialization.
[    3.858862] SELinux:  Setting up existing superblocks.
[    3.908047] audit: type=1403 audit(3.869:2): policy loaded auid=4294967295 ses=4294967295
[    3.917435] init: (Initializing SELinux non-enforcing took 0.09s.)
[    3.935206] init: init second stage started!
[    3.953056] init: Running restorecon...
[    4.017311] init: waitpid failed: No child processes
[    4.023883] init: (Loading properties from /default.prop took 0.00s.)
[    4.039116] init: (Parsing /init.environ.rc took 0.00s.)
[    4.050829] init: (Parsing /init.usb.rc took 0.01s.)
[    4.056850] init: (Parsing /init.rpi3.rc took 0.00s.)
[    4.065398] init: (Parsing /init.usb.configfs.rc took 0.00s.)
[    4.072295] init: (Parsing /init.zygote32.rc took 0.00s.)
[    4.077799] init: (Parsing /init.rc took 0.05s.)
[    4.084427] init: Starting service 'ueventd'...
[    4.089922] init: Waiting for /dev/.coldboot_done...
[    4.094380] ueventd: ueventd started!
[    4.354335] ueventd: Coldboot took 0.25s.
[    4.361564] init: Waiting for /dev/.coldboot_done took 0.27s.
[    4.382479] audit: type=1400 audit(4.339:3): avc:  denied  { create } for  pid=1 comm="init" name="sdcard" scontext=u:r:init:s0 tcontext=u:object_r:tmpfs:s0 tclass=lnk_file permissive=1
[    4.401573] init: write_file: Unable to open '/proc/sys/kernel/sched_compat_yield': No such file or directory
[    4.414347] init: write_file: Unable to write to '/dev/cpuctl/cpu.shares': Invalid argument
[    4.429335] init: write_file: Unable to open '/proc/sys/abi/swp': No such file or directory
[    4.448656] EXT4-fs (mmcblk0p15): Ignoring removed nomblk_io_submit option
[    5.476985] EXT4-fs (mmcblk0p15): 2 orphan inodes deleted
[    5.482433] EXT4-fs (mmcblk0p15): recovery complete
[    5.952998] EXT4-fs (mmcblk0p15): mounted filesystem with ordered data mode. Opts: errors=remount-ro,nomblk_io_submit
[    5.963826] fs_mgr: check_fs(): mount(/dev/block/platform/soc/3f202000.sdhost/by-name/userdata,/data,ext4)=0: Success
[    6.312623] fs_mgr: check_fs(): unmount(/data) succeeded
[    6.320201] fs_mgr: Running /system/bin/e2fsck on /dev/block/platform/soc/3f202000.sdhost/by-name/userdata
[    6.360529] random: e2fsck: uninitialized urandom read (40 bytes read, 102 bits of entropy available)
[    7.633616] e2fsck: e2fsck 1.42.9 (28-Dec-2013)
[    7.633616]
[    7.639732] e2fsck: Pass 1: Checking inodes, blocks, and sizes
[    7.639732]
[    7.647086] e2fsck: Pass 2: Checking directory structure
[    7.647086]
[    7.653892] e2fsck: Pass 3: Checking directory connectivity
[    7.653892]
[    7.660976] e2fsck: Pass 4: Checking reference counts
[    7.660976]
[    7.667544] e2fsck: Pass 5: Checking group summary information
[    7.667544]
[    7.674872] e2fsck: data: 1278/163840 files (6.5% non-contiguous), 37855/655360 blocks
[    7.674872]
[    7.686635] EXT4-fs (mmcblk0p15): Ignoring removed nomblk_io_submit option
[    7.715157] EXT4-fs (mmcblk0p15): mounted filesystem with ordered data mode. Opts: nomblk_io_submit,errors=panic
[    7.725512] fs_mgr: __mount(source=/dev/block/platform/soc/3f202000.sdhost/by-name/userdata,target=/data,type=ext4)=0
[    7.748139] EXT4-fs (mmcblk0p11): mounted filesystem with ordered data mode. Opts: (null)
[    7.756449] fs_mgr: __mount(source=/dev/block/platform/soc/3f202000.sdhost/by-name/oem_a,target=/oem,type=ext4)=0
[    7.778895] EXT4-fs (mmcblk0p13): mounted filesystem with ordered data mode. Opts: (null)
[    7.787197] fs_mgr: __mount(source=/dev/block/platform/soc/3f202000.sdhost/by-name/gapps_a,target=/gapps,type=ext4)=0
[    7.802016] init: (Parsing /system/etc/init/atrace.rc took 0.00s.)
[    7.809337] init: (Parsing /system/etc/init/audioserver.rc took 0.00s.)
[    7.816901] init: (Parsing /system/etc/init/bootanim.rc took 0.00s.)
[    7.824349] init: (Parsing /system/etc/init/bootstat.rc took 0.00s.)
[    7.831822] init: (Parsing /system/etc/init/cameraserver.rc took 0.00s.)
[    7.839767] init: (Parsing /system/etc/init/crash_reporter.rc took 0.00s.)
[    7.847639] init: (Parsing /system/etc/init/debuggerd.rc took 0.00s.)
[    7.855052] init: (Parsing /system/etc/init/drmserver.rc took 0.00s.)
[    7.862712] init: (Parsing /system/etc/init/dumpstate.rc took 0.00s.)
[    7.870140] init: (Parsing /system/etc/init/gatekeeperd.rc took 0.00s.)
[    7.877820] init: (Parsing /system/etc/init/init-debug.rc took 0.00s.)
[    7.885254] init: (Parsing /system/etc/init/inputdriverserv.rc took 0.00s.)
[    7.893194] init: (Parsing /system/etc/init/installd.rc took 0.00s.)
[    7.900566] init: (Parsing /system/etc/init/keystore.rc took 0.00s.)
[    7.907932] init: (Parsing /system/etc/init/lmkd.rc took 0.00s.)
[    7.914939] init: (Parsing /system/etc/init/logcatd.rc took 0.00s.)
[    7.922275] init: (Parsing /system/etc/init/logd.rc took 0.00s.)
[    7.929280] init: (Parsing /system/etc/init/mdnsd.rc took 0.00s.)
[    7.936300] init: (Parsing /system/etc/init/mediacodec.rc took 0.00s.)
[    7.943849] init: (Parsing /system/etc/init/mediadrmserver.rc took 0.00s.)
[    7.951744] init: (Parsing /system/etc/init/mediaextractor.rc took 0.00s.)
[    7.959642] init: (Parsing /system/etc/init/mediaserver.rc took 0.00s.)
[    7.967234] init: (Parsing /system/etc/init/metrics_collector.rc took 0.00s.)
[    7.975379] init: (Parsing /system/etc/init/metricsd.rc took 0.00s.)
[    7.982785] init: (Parsing /system/etc/init/mtpd.rc took 0.00s.)
[    7.989833] init: (Parsing /system/etc/init/netd.rc took 0.00s.)
[    7.996797] init: (Parsing /system/etc/init/perfprofd.rc took 0.00s.)
[    8.004166] init: (Parsing /system/etc/init/peripheralman.rc took 0.00s.)
[    8.011959] init: (Parsing /system/etc/init/racoon.rc took 0.00s.)
[    8.019220] init: (Parsing /system/etc/init/servicemanager.rc took 0.00s.)
[    8.027023] init: (Parsing /system/etc/init/surfaceflinger.rc took 0.00s.)
[    8.034908] init: (Parsing /system/etc/init/uncrypt.rc took 0.00s.)
[    8.042211] init: (Parsing /system/etc/init/update_engine.rc took 0.00s.)
[    8.050033] init: (Parsing /system/etc/init/vdc.rc took 0.00s.)
[    8.056920] init: (Parsing /system/etc/init/vold.rc took 0.00s.)
[    8.067539] init: Starting service 'logd'...
[    8.073207] EXT4-fs (mmcblk0p6): re-mounted. Opts: (null)
[    8.082816] random: logd: uninitialized urandom read (40 bytes read, 107 bits of entropy available)
[    8.087109] init: (Loading properties from /system/build.prop took 0.00s.)
[    8.087238] init: (Loading properties from /vendor/build.prop took 0.00s.)
[    8.087301] init: (Loading properties from /factory/factory.prop took 0.00s.)
[    8.087629] init: /recovery not specified in fstab
[    8.090288] init: Starting service 'debuggerd'...
[    8.091223] init: do_start: Service debuggerd64 not found
[    8.092953] init: Starting service 'vold'...
[    8.099521] random: debuggerd: uninitialized urandom read (40 bytes read, 107 bits of entropy available)
[    8.102512] init: Not bootcharting.
[    8.108968] random: vold: uninitialized urandom read (40 bytes read, 107 bits of entropy available)
[    8.229241] logd.auditd: start
[    8.232361] logd.klogd: 8195917549
[    8.327758] random: vdc: uninitialized urandom read (40 bytes read, 109 bits of entropy available)
[    8.779182] init: Starting service 'exec 1 (/system/bin/tzdatacheck)'...
[    8.792143] random: tzdatacheck: uninitialized urandom read (40 bytes read, 109 bits of entropy available)
[    8.829421] init: Service 'exec 1 (/system/bin/tzdatacheck)' (pid 142) exited with status 0
[    8.854101] init: (Loading properties from /data/local.prop took 0.00s.)
[    8.863628] random: init: uninitialized urandom read (40 bytes read, 110 bits of entropy available)
[    9.065490] init: Starting service 'logd-reinit'...
[    9.072650] init: write_file: Unable to open '/proc/sys/vm/min_free_order_shift': No such file or directory
[    9.073544] random: logd: uninitialized urandom read (40 bytes read, 110 bits of entropy available)
[    9.095381] init: Starting service 'healthd'...
[    9.101620] init: Starting service 'lmkd'...
[    9.104914] logd.daemon: reinit
[    9.110757] init: Starting service 'servicemanager'...
[    9.117493] init: Starting service 'surfaceflinger'...
[    9.123258] random: lmkd: uninitialized urandom read (40 bytes read, 110 bits of entropy available)
[    9.123838] init: couldn't write 148 to /sys/fs/cgroup/stune/foreground/tasks: No such file or directory
[    9.124023] init: Service 'logd-reinit' (pid 144) exited with status 0
[    9.126240] init: write_file: Unable to open '/sys/kernel/debug/tracing/tracing_on': No such file or directory
[    9.127552] init: Starting service 'console'...
[    9.128686] init: Starting service 'adbd'...
[    9.130100] init: cannot find '/system/bin/update_verifier' (No such file or directory), disabling 'exec 2 (/system/bin/update_verifier)'
[    9.130187] init: cannot find '/system/bin/install-recovery.sh' (No such file or directory), disabling 'flash_recovery'
[    9.130986] init: Starting service 'zygote'...
[    9.132634] init: Starting service 'audioserver'...
[    9.133806] random: servicemanager: uninitialized urandom read (40 bytes read, 110 bits of entropy available)
[    9.133813] random: surfaceflinger: uninitialized urandom read (40 bytes read, 110 bits of entropy available)
[    9.134557] init: Starting service 'cameraserver'...
[    9.136383] init: Starting service 'drm'...
[    9.138394] init: Starting service 'installd'...
[    9.140303] binder: 145:145 transaction failed 29189, size 0-0
[    9.140308] init: Starting service 'keystore'...
[    9.142419] init: Starting service 'mediacodec'...
[    9.144238] init: Starting service 'mediadrm'...
[    9.146077] init: Starting service 'mediaextractor'...
[    9.148319] init: Starting service 'media'...
[    9.150147] init: Starting service 'netd'...
[    9.152228] init: Starting service 'peripheralman'...
[    9.154243] init: Starting service 'crash_reporter'...
[    9.156219] init: Starting service 'crash_sender'...
[    9.158435] init: Starting service 'gatekeeperd'...
[    9.160465] init: Starting service 'inputdriverserv'...
[    9.162354] init: Starting service 'metricscollector'...
[    9.164404] init: Starting service 'metricsd'...
[    9.200548] init: Starting service 'perfprofd'...
[    9.210597] init: Starting service 'update_engine'...
[    9.263242] init: write_file: Unable to open '/sys/class/android_usb/android0/enable': No such file or directory
[    9.263330] init: write_file: Unable to open '/sys/class/android_usb/android0/idVendor': No such file or directory
[    9.263401] init: write_file: Unable to open '/sys/class/android_usb/android0/idProduct': No such file or directory
[    9.263494] init: write_file: Unable to open '/sys/class/android_usb/android0/functions': No such file or directory
[    9.263564] init: write_file: Unable to open '/sys/class/android_usb/android0/enable': No such file or directory
[    9.264302] init: write_file: Unable to open '/sys/class/android_usb/android0/enable': No such file or directory