Установка Armbian на планшет Icoo D70gt

Установка, обновление, WiFi

Наверное одно из самых недолговечных домашних электронных устройств - это планшет. Недлоговечное не в плане быстрой поломки (хотя и такое за ними водится), а в плане быстрого устаревания.

ПО ориентируется на флагманы, а устройство из среднего или низшего ценового диапазона ещё год назад вполне сносно работавшее вызывает только желание приложить его об стену.

Возможен и вариант частично работающего устройства: например разбит тачскрин, окончательно и бесповоротно сдох аккумулятор, может даже и сам экран разбит.

В любом случае, пока живы “мозги” планшета, можно постараться извлечь из планшета пользу установив на него ОС с ядром Linux.

Ради такого дела был извлечён из закромов планшет промаркированный Icoo D70GT. В целом данная методика подойдёт и для других планшетов на базе Allwinner процессоров.

Icoo D70

Характеристики я нашел на Icoo D70W:

  • Android 4.0.3 (ICS)
  • CPU: All Winner A10, 1.2GHz; -GPU: Mali 400
  • Оперативная память (RAM): 1GB,DDR3
  • Емкость аккум: 3600 мАч
  • Встроенная память: 16GB
  • Экран: емкостный, 1024 x 600
  • WiFi 802.11 b/g/n
  • Камера: 1.3 Мпикс (gc0308)

Icoo D70GT попроще. Реальные отличия в характеристиках:

  • Емкость аккум: 3100 мАч
  • Встроенная память: 8GB
  • Экран: емкостный, 1024 x 600, но с плохими углами обзора.
  • Камера: 0.3 Мпикс Сенсор gc0308 по данным script.bin с разрешением 640x480.
  • WiFi 802.11 b/g/n (0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter)

Максимальная частота в 1.2GHz вызывает сомнения, по крайней мере когда я попробовал поднять максимальную частоту до 1.2Ghz и запустил stress тест планшет очень быстро перестал откликаться на внешние раздражители. Так что пока, примем максимальную частоту за 1GHz.

Но пора переходить к практической стороне вопроса.

Выбор образа Armbian

Выбираем образ Armbian для платы с похожими характеристиками. Можно не угадать с первого раза и планшет не стартанёт.

Я взял образ для Cubieboard 1, причём не mainline kernel, а legacy.

Правда куби уже находится в неподдерживаемых устройствах, но нам и не нужны последние новшевства.

А образ с legacy ядром выбран из тех соображений, что с ним можно использовать script.bin и он поддерживает NAND память.

Так что на странице загрузок качаем образ Debian_jessie_default.7z.

После скачивания архива, нужно распаковать его и записать образ на microSD карту объёмом не менее 2Gb. Будет большим плюсом, если карта будет обладать хорошей скоростью на чтение и запись.

Как выбрать карту и записать на неё образ можно прочитать в официальной документации Armbian.

Под linux-системами можно воспользоваться штатными средствами.

У меня система автоматически монтирует подключённые диски, так что предварительно необходимо размонтировать карту:

sudo umount /dev/sdc1

Для записи образа удобно воспользоваться утилитой ddrescure, она наглядно показывает процесс записи на карту:

sudo ddrescue Armbian_5.25_Lime_Debian_jessie_default_3.4.113.img /dev/sdc -D --force

Путь к устройству MicroSD карты зависит от количества дисковых устройств в вашей системе, у меня это /dev/sdc.

Если ddrescue не установлено, и нет желания или возможности его установить, можно воспользоваться обычным dd.

sudo dd if=Armbian_5.25_Lime_Debian_jessie_default_3.4.113.img of=/dev/sdc bs=1M

Извлечение script.bin

Для нормальной работы планшета под управлением Armbian требуется файл инициалзиации script.bin он данного устройства.

Пока одной рукой я качал и записывал образ Armbian, другой рукой извлекал этот файл из android-прошивки планшета.

Прежде всего установил adb. На debian-based системах это делается одной командой:

sudo apt-get install android-tools-adb

После установки, подключил планшет к ПК по USB. Отладка по USB должна быть разрешена.

Зайдя в шелл планшета через adb

sudo adb shell

я сделал дамп раздела nanda (boot раздел) целиком, потому что смонтировать его непосредственно на планшете у меня не получилось. Возможно ещё придётся выполнить на планшете su для перехода под суперпользователя.

# su
dd if=/dev/block/nanda of=/mnt/sdcard/nanda.bin
exit

Следущим шагом скопировал полученный образ раздела:

adb pull /mnt/sdcard/nanda.bin

После этого смонтировал образ из файла локально и извлёк из него script.bin.

sudo mount nanda.bin /mnt
cp /mnt/script.bin d70gt_script.bin
sudo umount /mnt

Копию я заботливо сохранил d70gt_script.bin.

Редактирование script.bin

Как видно из расширения, этот файл имеет определённый бинарный формат, и не предназначен для редактирования человеком.

Для решения этой проблемы в составе Sunxi tools присутствует конвертер sunxi-fexc и обёртки для него bin2fex и fex2bin.

В образе Armbian эта утилита уже присутствует, для пк её понадобится собрать самостоятельно, как - описано на странице sunxi tools, или установить из репозитория ос. например: sudo apt install sunxi-tools.

Я преобразовал полученный script.bin в текстовый формат:

bin2fex d70gt_script.bin d70gt_script.fex

и отредактировал полученный файл своим любимым текстовым редактором.

Для начала я изменил два параметра в секциях [usbc0] и [usbc2], что бы usb порты были доступны сразу после загрузки (внимательный читатель уже обратил внимание, что fex файл схож по формату с ini файлом).

Параметры называются одинаково:

usb_host_init_state = 0

И всё что требуется - лишь заменить 0 на 1:

usb_host_init_state = 1

Это укажет, что при загрузке устройство должно активировать USB порты.

Нулевой порт - это OTG порт, а на втором порту подключен WiFi модуль.

В этом планшете порт 1 не используется, поэтому он запрещён в секции [usbc1] с помощью параметра

usb_used = 0

Для других планшетов может потребоваться больше изменений, что бы получить от планшета максимум.

Подробнее о параметрах fex файлов можно почитать на странице Fex Guide.

После того, как файл отредактирован, я сохранил его и конвертнул обратно в script.bin.

fex2bin d70gt_script.fex new_script.bin

Обратите внимание, что я сохранил результат в новый файл new_script.bin, что бы не потерять оригинальный.

Подготовка системы

К этому моменту исходный образ Armbian уже записан на microSD. Для надёжности, я делаю ещё раз sync.

Подмонтировав свеже записанный раздел, я заменил script.bin новым:

sudo rm <sdcard>/boot/script.bin
sudo cp new_script.bin <sdcard>/boot/script.bin

Теперь пришло время настроить сетевой интерфейс.

В файл <sdcard>/etc/network/interfaces требуется добавить следующие строчки:

allow-hotplug usb0
iface usb0 inet static
        address 192.168.99.70
        netmask 255.255.255.252
        gateway 192.168.99.69
        dns-nameservers 8.8.8.8 8.8.4.4

Что бы интерфейс появлелся, необходимо добавить в загрузку модуль ядра g_ether. Просто добавляем его в файл <sdcard>/etc/modules-load.d/modules.conf.

Всё это позволит использовать USB OTG планшета, как виртуальную сетевую карту и соединить таким образом планшет и ПК.

Теперь размонтирую SD карту и безопасно её извлекаю, вставляю карту в планшет.

После включения планшета, или перезагрузки из андроида планшет загрузит Armbian с SD карты.

Всё было сделано верно, и на экране появилось приглашение ко входу.

Login screen

На скриншоте виден кусок лога, я не разбирался почему, но иногда лог загрузки выводится, а иногда нет.

Подключение по сети

“Почему же сразу нельзя было настроить WiFi?” спросите вы. Да, на более другом планшете можно было это сделать, но не в этом случае.

Всё дело в том, что в планшете используется WiFi модуль Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter, а в использованном нами образе Armbian-а подключаемый модуль ядра для этого устройства присутствует, но собран для архитектуры sun5i, а само ядро для архитектуры sun4i.

Вот эта ма-аленькая деталь, не даёт его нормально использовать.

Поэтому для начала я и стал устанавливать соединение с великой паутиной по тому интерфейсу, который доступен.

Подключил планшет к ПК USB кабелем. Не следует использовать низко-качественные кабели - поимеете кучу проблемм.

В логах dmesg на ПК можно посмотреть, что было создано новое сетевое устройство:

[718377.956160] cdc_eem 4-1.5:1.0 usb0: register 'cdc_eem' at usb-0000:00:1d.0-1.5, CDC EEM Device, c6:30:ad:0a:36:67
[718378.231525] cdc_eem 4-1.5:1.0 enp0s29u1u5: renamed from usb0

Сперва как usb0, а затем переименовано в enp0s29u1u5.

На вашей системе оно будет иметь другое имя, а может так и остаться usb0.

Теперь настраиваю новый интерфейс на ПК.

sudo ifconfig enp0s29u1u5 192.168.99.69/30

Но на самом деле не всё так просто оказалось. Возможно это проблема моего планшета, но интерфейс на ПК периодически отваливался и терял настройку. Так что я прописал настройки статического IP через Network Manager, что бы при поднятии интерфейса он автоматически выставлял нужный IP.

Так же разово прописал маскарадинг, что бы наш планшет мог ходить в интернет.

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 192.168.99.68/30 -o eth0 -j MASQUERADE

Наконец настало время осуществить торжественный вход на планшет. По SSH.

ssh root@192.168.99.70

Соединение через USB получилось довольно тормозное, так что надо подождать и не паниковать.

По-умолчанию для пользователя root задан пароль 1234.

You are required to change your password immediately (root enforced)
  ____      _     _      _                         _ 
 / ___|   _| |__ (_) ___| |__   ___   __ _ _ __ __| |
| |  | | | | '_ \| |/ _ \ '_ \ / _ \ / _` | '__/ _` |
| |__| |_| | |_) | |  __/ |_) | (_) | (_| | | | (_| |
 \____\__,_|_.__/|_|\___|_.__/ \___/ \__,_|_|  \__,_|


Welcome to ARMBIAN 5.25 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun4i
System load:   1.08            	Up time:       2 min
Memory usage:  3 % of 985Mb  	IP:            192.168.99.70
CPU temp:      42°C
Usage of /:    82% of 1.2G   	Battery:       20% charging


Warning: a reboot is needed to finish resizing the filesystem
Please reboot the system as soon as possible

После успешного входа, armbian произведёт предварительную самонастройку, запросит изменение пароля root и создание нового пользователя, расширит раздел на SD карте на весь доступный объём.

Arbian попросил перезагрузить систему, для завершения настройки и я удовлетворил его желание командой reboot.

SSH позволяет входить на отдалённую систему не только по паролю, но и по RSA ключам. Это удобнее и безопаснее, так что можно скопировать свой публичный ключ на планшет командой ssh-copy-id root@192.168.99.70 и облегчить себе процедуру входа.

Дождавшись окончания перезагрузки (это видно на экране планшета, по появлению приглашения ко входу) я опять вошел на планшет и проверил, что мировая сеть доступна.

root@cubieboard:~# ping www.w3.org
PING www.w3.org (128.30.52.100) 56(84) bytes of data.
64 bytes from hans-moleman.w3.org (128.30.52.100): icmp_seq=1 ttl=46 time=126 ms
...

Если по каким-то причинам настроить маскарадинг не удалось, можно установить на ПК какой-нибудь прокси-сервер, например tinyproxy. Для обновления системы через apt его вполне хватит.

Если используется прокси, то надо будет на планшете указать его адрес.

export http_proxy=http://192.168.99.69:8888

Теперь обновляю систему целиком с помощью apt.

apt update
apt full-upgrade

Потребовалось запастись терпением, что бы дождаться завершения процесса установки. Сама загрузка пакетов происходит достаточно быстро, а вот распаковка пакетов дело долгое. Особенно долго распаковывается ядро и его заголовки.

Перед выполнением команд обновления, можно запустить screen или tmux. В случае потери соединения процесс обновления не прервётся и к нему можно будет вернутся командой screen -r (tmux a).

Уф, я не засекал, сколько времени длилось обновление системы, но по ощущениям это было от получаса до часа. Время сильно зависит от скорости записи на SD карту.

Теперь можно в очередной раз перезгрузить систему командой reboot и опять войти на планшет.

В обновлённой системе модуль 8192cu успешно загрузился. В этом можно убедится дав команду lsmod | grep 8192cu.

Так же можно убедиться, что WiFi интерфейс стал доступен:

root@cubieboard:~# iwconfig wlan0
wlan0     unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency=2.412 GHz  Access Point: Not-Associated
          Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=0/100  Signal level=0 dBm  Noise level=0 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Настроить подключение к точке доступа проще всего с помощью ncurses утилиты armbian-config которая была установлена при обновлении.

Интерфейс у неё простой и понятный, так что не вижу смысла подробно останавливаться на ней.

Отмечу только, что соединение устанавливается посредством NetworkManager и доступные конфигурации лежат в каталоге /etc/NetworkManager/system-connections/.

В завершении откроем файл /etc/network/interfaces и закомментируем одну строчку ранее добавленную при настройке интерфейса usb0:

#        gateway 192.168.99.69

Если это не сделать, то планшет будет пытаться ходить в интернет через USB сетевое подключение, а это совершенно не нужно.

При желании можно полностью отключить конфигурацию для usb0 но я его оставил, что бы иметь резервный интерфейс для доступа к планшету.

Теперь для чистоты эксперимента перезагрузим планшет (любимая команда reboot) и после перезагрузки зайдём на планшет уже по WiFi.

$ ssh root@192.168.11.199
  ____      _     _      _                         _
 / ___|   _| |__ (_) ___| |__   ___   __ _ _ __ __| |
| |  | | | | '_ \| |/ _ \ '_ \ / _ \ / _` | '__/ _` |
| |__| |_| | |_) | |  __/ |_) | (_) | (_| | | | (_| |
 \____\__,_|_.__/|_|\___|_.__/ \___/ \__,_|_|  \__,_|


Welcome to ARMBIAN 5.31 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun4i
System load:   1.00 1.03 1.05  	Up time:       1:04 hour
Memory usage:  4 % of 985MB  	IP:            192.168.99.70,192.168.11.199
CPU temp:      31°C
Usage of /:    16% of 7.2G   	Battery:       92% charging

[ General system configuration: armbian-config ]
Last login: Sat Oct 28 22:51:31 2017 from hippo.lan

root@cubieboard:~#
 
comments powered by Disqus