Как стать автором
Поиск
Написать публикацию
Обновить

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

Время на прочтение5 мин
Количество просмотров3.1K
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.
Теги:
Хабы:
Всего голосов 65: ↑64 и ↓1+63
Комментарии22

Публикации

Ближайшие события