Pull to refresh

Беспроводная сеть на Dingoo A320

Reading time 5 min
Views 2.9K
Dingoo A320 уже третий год держит пальму первенства по популярности среди карманных эмуляторов всего-что-только-может-эмулироваться, и неспроста — низкая цена, достойное железо и огромная армия фанатов позволили этой приставке буквально завоевать мир. Но есть один, существенный в XXI веке недостаток — отсутствие каких-либо беспроводных интерфейсов. Эту проблему мы и будем решать.

Итак, дано — Dingoo A320 с установленным Dingux. Требуется максимально бюджетным образом прикрутить беспроводную TCP/IP-сеть.


*фото пользователя Nzeemin с wikipedia.org

На самом деле все описанное применимо и к Vogue/Playboy-плееру, и к различным eInk-читалкам, и ко множеству прочих устройств с мобильным линуксом.



Идельным вариантов было бы заполучить в нашей приставке Wi-fi, но единственный разумный способ добиться этого — использовать SDIO-карточку — отпадает по двум причинам: во-первых, в динге mini-SD, и найти SDIO-wireless под такой формат проблематично, и во-вторых, dingux пока что работает только с карты памяти, и слот всегда занят.

Остается Bluetooth. USB-хост, через который можно было бы подключить BT-донгл в процессоре имеется, но никуда на плате не распаян, так что этот вариант отпадает. И тут на арену выходит довольно безумная, но просто осуществимая идея SLIP over Bluetooth.

Поясню, что имеется в виду. В Dingoo, как и практически в любом устройстве есть выведенный на плату последовательный порт, который используется производителем для отладки. Под dingux этот порт полностью в нашем распоряжении, и по умолчанию на нем висит обычная линукс-консоль, куда можно залогиниться и вводить команды. Если отключить эту консоль, соединить последовательный порт приставки с последовательным портом компьютера, то мы получим классический нуль-модем. После этого, используя протокол PPP можно установить сессию и поднять TCP/IP-соединение поверх последовательного порта. Да-да, именно это мы и делали еще лет 10 назад, названивая провайдеру через модем. Но протокол PPP для нас излишен, ведь нам требуется надо всего лишь подключить приставку, а не организовывать модемный пул.

Предшественником PPP был протокол SLIP. В отличие от PPP, SLIP работает в одноранговых сетях, то есть когда нет разделения на серверные и клиентские машины. Достаточно лишь соединить два компьютера, настроить последовательные порты на одинаковую скорость, и дать понять операционке, что это — сетевое подключение. В linux для этого используется команда slattach, в Windows — несколько кликов мышкой. К сожалению, в Windows 7 встроенную поддержку SLIP убрали, и для её настройки требуется “режим совместимости с Windows XP” (не силен в Windows, поэтому не знаю, насколько это сложно).
Внимательный читатель уже готовится возмутиться, ведь я слишком много говорю о последовательных портах, и ни слова еще не сказал о том, как же мы будем организовывать беспроводное соединение. Читатель прав, пора раскрыть главный козырь.



Встречайте — Wireless Bluetooth RS232 TTL Transceiver Module. Этот девайс умеет ровно то, что требуется (организовывает Bluetooth Serial Port и подменяет собой нуль-модемный кабель в вышеописанной схеме), и стоит всего $6.60 (на DealExtreme, на eBay есть и дешевле). Приличной документации на это чудо (как и практически на все китайские устройства) нет, но из двух-трех страничных даташитов становится понятно, куда нужно припаивать провода.

Распиновка нужных нам контактов следующая (держим компонентами к себе антенной вверх, нумерация против часовой начиная с левого верхнего контакта):
1 — Tx, передача (припаиваем к Rx приставки)
2 — Rx, прием (припаиваем к Tx приставки)
12 — VCC, 3.3V
13 — GND

Осторожно вскрываем дингу — 4 резиновые заглушки сзади, под ними 4 винта, после этого пластиковой карточкой расщелкиваем защелки, очень аккуратно отклеиваем батарею, откручиваем еще два винта, и вытаскиваем плату. Аккуратненько поддеваем экран, отгибаем его в сторону. Под экраном располагается 4 подписанных контакта, 2 из которых — это наш последовательных порт. Теперь припаиваем BT-адаптер по следующей “схеме”, стараясь делать пайку как можно более “плоской”, иначе в собранном обратно устройстве бугорки олова будут давить на экран, на котором будут возникать темные (это в лучшем случае) пятна.

image

Питание 3.3 В взято с FM-модуля, удобная земля найдена в крепеже кнопки Reset. Так выглядит моя приставка после вмешательства:

image

image

Не обращайте внимания на два провода, которые припаяны к оставшимся контактам под экраном — это для дальнейших извращений, к этой статье они отношения не имеют.

Собираем обратно. Платку можно расположить рядом с аккумулятором, предусмотрительно изолировав её от основной платы хотя бы бумагой. На этом железная часть окончена, можно выключать паяльник и сматывать МГТФ. Переходим к софтовой.

Первым делом нам требуется отключить консоль на последовательном порту, которую dingux по умолчанию там запускает. Для этого подключаемся к динге по telnet через USB, вводим

vi /etc/inittab

и удаляем (или комментируем) строку

ttyS0::respawn:/sbin/getty -L ttyS0 57600 vt100

и перезагружаем Dingoo. Теперь требуется изменить настройки BT-адаптера, а именно скорость порта и имя устройства. Для этого опять заходим через telnet и

screen /dev/ttyS0 9600

Пока bluetooth-соединение не установлено, платка принимает AT-команды. Есть одна особенность — при вводе нужно уложиться в 1 секунду, поэтому команды надо отправлять через copy-paste, а не набирать вручную. Перевод строки после введенной команды также не нужен. Для начала отправим обычное

AT

Если получен ответ OK, значит все в порядке. Иначе ищем дефекты пайки.
Установим скорость порта равной 57600

AT+BAUD7

придет ответ OK57600;

и имя устройства

AT+NAMEdingoo

получим ответ OKdingoo.

Теперь настало время перекомпилировать ядро dingux, включив в нем опцию CONFIG_SLIP=y. В конце статьи будут приведены ссылки на скомпилированное ядро, которое используется мной, но оно в значительной степени устаревшее (к примеру, нет эмуляции мыши).

Снова перезагружаемся и переходим к настройке компьютера. У меня, к сожалению, нет Windows-машин под рукой, поэтому все описано только для Linux. Сперва обнаруживаем новое устройство и спариваемся с ним. Ставим утилиту slattach (пакет net-tools в Debian), после чего выполняем скрипт

#!/bin/sh
# Should be run with root privileges

rfcomm bind rfcomm0 00:11:22:33:44:55
slattach -L -m -s 57600 -p slip /dev/rfcomm0 &
while ! ifconfig sl0
do
  sleep 1
done
ifconfig sl0 10.100.1.1 pointopoint 10.100.1.2 up


Замените 00:11:22:33:44:55 на bluetooth-адрес вашей динги (узнать его можно в менеджере Bluetooth или через команду hcitool scan).

Копируем на dingoo скомпилированную под неё версию slattach (см. ссылки в конце), заходим через telnet (пока еще по usb), и выполняем

#!/bin/sh
/boot/slattach /dev/ttyS0 57600
while ! ifconfig sl0
do
  sleep 1
done
stty -F /dev/ttyS0 intr undef quit undef rprnt undef flush undef min 1 cread
ifconfig sl0 10.100.1.2 pointopoint 10.100.1.1 up


Команда stty необходима, поскольку терминал изначально настроен на текстовое взаимодействие с пользователем, а нам нужно передавать бинарные данные. Этот скрипт нужно сохранить в файл и создать на него ссылку из меню dingux, чтобы исключить необходимость коннектиться по usb, и сделать беспроводную связь полноценно беспроводной.

Все! Выполняем на компьютере
ping 10.100.1.2
и видим радостные сообщения о полученных откликах.

Дальность работы устройства около пяти метров (при прямой видимости), но на BT-адаптере предусмотрено место для припаивания внешней антенны, при её использовании дальность может значительно возрасти.

Для увеличения скорости обмена можно, во-первых, переключить адаптер на скорость 115200 бод (и подредактировать все скрипты соответствующим образом), и, во-вторых, использовать вместо обычного SLIP его компрессированный вариант — CSLIP.

Разумеется, что telnet- и ftp-сервер, через которые dingux общается с пользователем, теперь доступны и через bluetooth. Но к сожалению, прочего сетевого софта в принципе нет, даже веб-браузера. Так что из сетевых развлечений только игры, в которых при портировании не был вырезан мультиплеер — например, Doom.

И, наконец, ссылки на файлы:
1. slipintro — ссылка на руководство по настройке SLIP под Windows XP. Надеюсь, поможет тем, у кого нет Linux.
2. zImage_IL9325 | zImage_IL9331 | zImage_IL9338 — ядро (три версии для трех типов дисплея). Как уже отмечал, оно годичной давности, и последние изменения от OpenDingux или SCiENcE в нем отсутствуют.
3. rootfs — rootfs для этого ядра (уже с измененным /etc/inittab).
4. slattach — бинарник для dingux.
Tags:
Hubs:
+63
Comments 22
Comments Comments 22

Articles