Results 1 to 15 of 53

Thread: Bluetooth в Asus WL-500gP и RT-N16/N66U

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Post Bluetooth в Asus WL-500gP и RT-N16/N66U

    Данная тема является продолжением предыдущей Bluetooth в wl500gP от TIk
    Завожу новую, чтобы не затерялся мануал алгоритма запуска и конфигурации BlueZ для раздачи интернета через bluetootn PAN с учётом нынешних реалий, c шифрованием, спариванием и одноразовым запросом PINa.
    Для начала нужно ознакомиться с несколькими первыми постами предыдущей темы, без авторов которой не была бы возможна эта тема. Если при попытке повторить действия её автора вы столкнетесь с проблемами, то может вам поможет следующая информация:

    Список самых распространённых ошибок при настройке BlueZ:

    1. Для каждой прошивки нужны свои модули.
    С времён первого поста предыдущей темы появилось множество новых прошивок, не от Олега. Наверное не все догадываются, что дополнительно к каждой прошивке отдельным архивом идут модули, которые подгружаются пользователем по необходимости.
    Соответственно архивы с модулями, выложенные в теме вам скорее всего не подходят, или если они и загрузятся, то вы рискуете получить в будущем непонятные глюки.
    Где берутся модуля? Там же, где и прошивки. Например, у меня сейчас стоит прошивка WL500gP-1.9.2.7-d-r1222 от энтузиастов, брал я её здесь http://code.google.com/p/wl500g/downloads/list, здесь выбираю search all downloads и нахожу свои modules-1.9.2.7-d-r1222.tgz (Additional kernel modules from 2010.02.21). Распаковываю архив и складываю оттуда в папку /opt/bluez/modules следующие файлы:
    bluez.o
    bnep.o
    crc32.o
    hci_usb.o
    l2cap.o
    rfcomm.o
    sco.o

    Если нужен исключительно только PAN, то sco.o (аудио через блютус) и rfcomm.o (СОМ порт через блютус) можно и не искать.

    2. Загрузка модулей и запуск процессов BlueZ должны происходить в строгой очерёдности, один после другого.
    Скрипт с правильной последовательностью загрузки уже находится в архиве snapshot.tar.gz и помещается он в /opt/etc/init.d/S40bluetooth.
    В том же скрипте прописан запуск и остановка процессов, с установленными задержками. Дело в том, что некоторые процессы возвращают управление скрипту гораздо раньше, чем инициализируются сами, и возникает ситуация, когда следующий процесс инициализировался раньше предыдущего, не смог к нему обратиться и вывалился с ошибкой. Возможно именно для вашего устройства задержки надо будет увеличить, смотрите логи, реальная последовательность запуска процессов должна быть как в скрипте.

    3. На данный момент текущие версии дистрибутивов для BlueZ частично нерабочие, отчасти через ошибки сборки, отчасти, возможно в связи с тем, что рассчитаны на самые последние прошивки.
    Например с версиями библиотек bluez 3.36, которые предлагаются с репозитария, sdpd и другие процессы просто-напросто падают у меня и у многих других пользователей сразу после запуска. Благодаря пользователям из предыдущей ветки была найдена следующая рабочая комбинация библиотек:
    dbus - 1.1.1-3
    bluez-hcidump - 1.40-1
    bluez-libs - 3.17-1
    bluez-utils - 3.17-1
    Если у вас уже стоят более новые, то вы можете установить старые с архива после удаления текущих и принудительной установки с файла, например ipkg -force-downgrade install bluez-utils_3.17-1_mipsel.ipk.
    У этой рабочей комбинации библиотек есть свои проблемы - например, после ввода пинкода спаренные устройства не запоминаются, и их приходится спаривать и вводить PIN code каждый раз при подключении заново.
    Для решения этой проблемы пришлось сделать сборную солянку с пакетов, которая будет выглядеть примерно так:
    dbus - 1.1.1-3
    bluez-hcidump - 1.40-1
    bluez2-utils_2.25-6_mipsel + pand overwritten from bluez-utils_3.17-1_mipsel.ipk
    bluez-libs_3.17-1
    Чтобы не заморачиваться с комбинацией пакетов, уже готовый набор находится в файле shapshot.rar, а оригинальные дистрибутивы в distrib.rar.
    4. Есть ещё одна мелкая деталь - во всех случаях рассматривался вариант подключения только одного устройства одновременно. На самом же деле к роутеру, даже с донглом версии 1.2 можно подключать сразу несколько устройств и они будут работать, нужно только несколько модифицировать скрипты, что частично сделано в архиве shapshot.rar.
    Там по умолчанию можно подключать до двух устройств сразу, а вот при отключении одного из них сразу будут уничтожаться интерфейсы для обеих, меня это устраивало, у кого есть время и желание - дописать в скриптах распознавание какому устройству какой интерфейс принадлежит и какой из них нужно убивать - несложно.

    Алгоритм установки "по быстрому": (Для прошивки rt-n здесь)

    1. Закинуть на роутер пакеты из архива distrib.rar.
    Установить методом ipkg -nodep -force-downgrade install следующие пакеты:
    dbus - 1.1.1-3
    bluez-hcidump - 1.40-1
    bluez2-utils - 2.25-6
    bluez-libs_3.17-1
    2. Распаковать на роутере архив snapshot.tar.gz прямо в корень /. Файлы с архива должны перезаписать папки /opt/bin /opt/sbin /opt/var и так далее поверх уже установленных исполняемых файлов, библиотек и конфигурационных файлов.
    3. Если у вас рутовый аккаунт не называется admin, переименуйте его в файлах конфигурации согласно первой темы.
    Проверьте /opt/etc/init.d - для запуска и остановки всего BlueZ там используется только S40bluetooth, если у вас нет rc.unslung, то можете его добавить, переименовав из rc.unslung.default и сделав chmod +x rc.unslung, все остальные скрипты запуска от установленных ранее пакетов BlueZ в /opt/etc/init.d нужно удалить.
    4. В папку /opt/bluez/modules положите модули от вашей прошивки, я специально их не добавлял
    5. Усли у вас будет одновременно подключаться только одно устройство, закомментируйтее bnep1 в скриптах /opt/bluez/PAN_up.sh и PAN_down.sh - хватит и одного интерфейса.
    6. Впишите PIN код, который будет запрашивать ваш роутер в /opt/etc/bluetooth/pin - этот код вы будете вводить на мобильном, когда будете инициировать подключение к роутеру. После спаривания, роутер записывает реквизиты вашего устройства в /opt/var/lib/bluetooth по одной папке с макадресом на одно устройство.
    При попытке подключиться по блютусу к роутеру, он сначала заглянет в /opt/var/lib/bluetooth, если не найдёт там вашего устройства, тогда запросит пин и сверит с кодом отсюда /opt/etc/bluetooth/pin.

    Впишите PIN код, который будет передавать ваш роутер при попытке подключиться к внешнему bluetooth устройству в /opt/etc/bluetooth/pin-helper - этот код вы будете вводить на мобильном, когда дадите команду роутеру самому подключаться к телефону.

    7. Не спешите! Посмотрите как это работает:


    Сначала пройдите каждый этап вручную запуская блоки из /opt/etc/init.d/S40bluetooth, вы будете активировать процессы слева->направо:

    8. проверьте загрузку модулей:
    Code:
            insmod /opt/bluez/module/bluez.o
            insmod /opt/bluez/module/l2cap.o
            insmod /opt/bluez/module/crc32.o
            insmod /opt/bluez/module/bnep.o
            insmod /opt/bluez/module/rfcomm.o
            insmod /opt/bluez/module/sco.o
            insmod /opt/bluez/module/hci_usb.o
    выполните lsmod - все должны быть загружены.
    9. Запустите последовательно демон доступа к шине USB dbus-system, а потом демон доступа к шине устройств USB hcid. Посмотрите ps axuf и логи. Если вы изменили pin code, то вам нужно остановить все процессы bluez кроме dbus-system, и наново запустить всю цепочку, начиная с hcid.
    10. Теперь вы можете набрать hciconfig -a и посмотреть параметры ваших USB донглов. Команда hciconfig hci0 reset перезапускает донгл с номером hci0 (у вас их может быть несколько, тогда нужно несколько модифицировать скрипт запуска и указать там нужный USB-BТ девайс) и обрывает все текущие сеансы связи, если они уже были установлены.
    11. hciconfig hci0 up -запускаете первый донгл, смотрите логи.
    Теперь вы должны находить ваш роутер с телефона с именем BlueZ.
    12. Запускаете демон SDPd. Теперь с помощью sdptool можете прописать службы, которые по блютусу будет представлять ваш роутер, например:
    sdptool add LAN - собственно услуга PAN
    sdptool add --channel 2 SP - услуга rfcomm порта #2
    Теперь при запросе списка служб с роутера, ваш телефон должен показать услуги PAN и последовательного порта.
    13. Для обслуживания услуги PAN запускаете демон PANd c ключами из скрипта запуска и проверяете связь. Телефон и роутер должны спариться, после чего автоматически поднимется интерфейс bnep0 (проверяем с помощью ifconfig).
    Ваш ssh сеанс на пару секунд подвиснет, потому что роутер будет перенастраивать свой бридж, подключая туда интерфейсы блютуза.
    Мобильный телефон запросит у DHCP сервера вашего роутера настройки и получит доступ в сеть, согласно настроек DHCP.
    Наберите pand -l увидите список соединений демона PAN.
    Наберите hcitool con - увидите список всех соединений "по воздуху" с макадресом вашего телефона и режимом связи. Должны присутствовать слова AUTH ENCRYPT. Там же будут отображаться rfcomm, DUN и другие типы соединений. На основании этой информации в скрипте PAN_down.sh можно принимать решение, какой интерфейс убивать, при отсоединении одного из нескольких устройств по блютусу от роутера.

    Наберите l2ping macaddr, где macaddr адрес вашего телефона.

    После отключения соединения со стороны телефона или роутера, интерфейс bnep0 должен исчезнуть, а пакеты роутера опять на пару секунд перестанут ходить, пока он не вернёт свой бридж в предыдущее состояние. Состояние бриджа можно посмотреть командами brctl show && brctl showmacs br0.

    После повторной попытки подключения, телефон должен сразу соединиться, без запроса пина. В случае проблем, проверяйте права на доступ в папку /opt/var/lib/bluetooth.

    Для удаления пары с устройством, нужно определить удалить всю его папку с макадресом в /opt/var/lib/bluetooth.

    P.S. Спасибо Liquidstorm за тестирование и исправление ошибок
    __________________________________________________ _____________
    Литература идёт в следующим постом
    Attached Files Attached Files
    Last edited by haccker; 08-04-2011 at 19:08. Reason: перезалит snapshot.tar.gz: добавлены симлинки

Similar Threads

  1. Выбор роутера: Asus RT-N16 vs RT-N56U vs RT-N66U ?
    By Mihey111 in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 111
    Last Post: 13-04-2017, 18:09
  2. Asus RT-N66U
    By Omega in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 728
    Last Post: 02-02-2017, 07:15
  3. Asus RT-N66U
    By !gm in forum German Discussion - Deutsch (DE)
    Replies: 55
    Last Post: 16-05-2016, 16:02
  4. New Asus RT-N66U Router
    By hggomes in forum English Discussion
    Replies: 280
    Last Post: 02-07-2013, 18:29
  5. Всё про Asus RT-N66U
    By Omega in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 23
    Last Post: 22-06-2012, 19:53

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •