З'єднання Bluetooth 6LoWPAN між двома малиновими пісками


3

У мене виникло це питання в Stack Overflow, але мені запропонували перенестись сюди. Це було позначено для уваги модератора, але я не впевнений, як працює цей процес, і я не отримав жодного відгуку, тому я подумав, що запитаю тут:

Я намагаюся встановити Bluetooth Smart з'єднання між двома малиновими ІП, де я можу використовувати IPSP (профіль підтримки Інтернет-протоколу), щоб я міг спілкуватися з протоколом IPv6 за допомогою 6LoWPAN.

Мені вдалося встановити цю комунікацію між Raspberry Pis та Nordic nRF51 набором для розробки, проте як доказ концепції я зараз намагаюся встановити цей зв’язок між двома коробками Raspberry Pi без набору для розвитку Nordic nRF51.

Тому моїм першим кроком було встановлення Raspberry Pis. Я зробив це за допомогою кроків у Nordic's nRF5 IoT SDK ( https://developer.nordicsemi.com ). Я знаю, що Raspberry Pis встановлені правильно, оскільки вони обидва працюють з платою nRF51. Я в змозі встановити зв'язок між Raspberry Pi і дошками nRF51 і ping6 дошкою nRF51 від Raspberry Pi.

Тепер, щоб встановити з'єднання Bluetooth між Raspberry Pis, я виконую наступні кроки: На основному пристрої я запускаю такі команди:

#need root access
sudo su

#enable 6lowpan over Bluetooth le
echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable

#start advertising Bluetooth LE service
hciconfig hci0 leadv

На підлеглому пристрої я запускаю такі команди:

#need root access
sudo su

#enable 6lowpan over Bluetooth le
echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable

#establish le connection to master
hcitool lecc 5C:F3:70:XX:XX:XX

Команда hcitool lecc завжди повертає "Handle Connection 64". На даний момент у мене стабільний зв’язок між двома пристроями, що я можу перевірити за допомогою команди hcitool con .

Тепер я можу запустити наступну команду або на ведучому, або на підлеглому, де mac-адреса є адресою пристрою Bluetooth, до якого я підключаюсь:

echo “connect 5C:F3:70:XX:XX:XX 1” > /sys/kernel/debug/bluetooth/6lowpan_control

Незалежно від Raspberry Pi, я запускаю команду на встановлення з'єднання 6lowpan і якщо я запускаю команду ifconfig, я бачу новий bt0 пристрій. Інший Raspberry Pi, однак, не має пристрою bt0. Я спробував запустити команду ifconfig bt0 up, а також виконати ту саму команду echo (змінивши адресу mac), але жодна з них не дає мені пристрою bt0.

Пристрій bt0, який з’являється на Raspberry Pi, на якому я виконував команду, завжди зникає через 39 секунд. У файлі журналу / var / log / syslog виявляється, що демон ntpd починає прослуховувати інтерфейс bt0, коли він з'являється, а потім рівно через 39 секунд він виявляє, що інтерфейс відсутній, і випускає його. Я спробував призначити IPv6 адресу пристрою, коли він працює, використовуючи таку команду:

ifconfig bt0 inet6 add 2001:db8::5cf3:70ff:feXX:XXXX/64 

Тоді я запустив ping6, щоб постійно пінг його, сподіваючись трохи продовжити інтерфейс, але інтерфейс все-таки знизився через 39 секунд.

Я використовую два моделі Raspberry Pi 2 Model B, і обидва адаптери Bluetooth - це пристрої Bluetooth 4.0 Broadcom Corp BCM20702A0 ( для отримання інформації про адаптер використовується lsusb ). Незважаючи на те, що адаптери перелічені як Bluetooth 4.0, я зміг успішно використовувати їх разом із комплектом розробки Nordic nRF51 для встановлення зв'язку 6LoWPAN.

Після всіх моїх експериментів ось питання, які у мене є:

  • Чи можна робити те, що я намагаюся зробити?
  • Хто-небудь зміг успішно встановити зв’язок 6LoWPAN між двома пристроями Linux, який міг би сказати мені, чого я не вистачаю в своїх кроках?
  • Чи потрібно, щоб один із пристроїв Bluetooth був сумісний із Bluetooth Smart 4.2, щоб правильно встановити це з'єднання?
  • Хтось знайомий з bluez, який може порекомендувати додаткові кроки, щоб спробувати?

Будь-яка допомога буде дуже вдячна.

Джон

EDIT 1:

Мені вдалося встановити це з'єднання, працюючи між коробкою Ubuntu 14.04 та Raspberry Pi, встановивши попередньо вбудоване ядро ​​3.19, завантажене звідси: http://kernel.ubuntu.com/~kernel-ppa/mainline/linux-3.19. yz-черга / 2016-01-07-vivid /

Я досі не розумію, чому це не працює між двома малиновими пісками, але якщо я знайду рішення, опублікую його тут.

EDIT 2:

Ubuntu 14.04 працює з Bluez 4, в той час як Raspberry Pis працює з Bluez 5. оскільки я не зміг з'єднати два Raspberry Pis (працює з Bluez 5), я зрозумів, що я спробую з'єднати два екземпляри Fedora 23 із запуском Bluez 5, щоб побачити, чи щось не так Блюз або Малина Піс. У своїх експериментах я відчуваю однакову поведінку з двома екземплярами Fedora 23, які я робив із двома письмами Raspberry (де з'єднання 6lowpan знижується менше ніж за 30 секунд після підключення).

Версія bluez, що працює на Fedora 23, становить 5,35, а версія bluez, що працює на Raspberry Pis, становить 5,23.

Хтось має уявлення, чому це відбувається з Bluez 5.x?

Дякую,

Відповіді:


2

Рішення

Я просто вирішив питання. проблема була з ядром. Я встановив Ubuntu 15, але мав таку ж проблему, що і Raspberry Pis, тому я завантажив джерело для ядра 4.4, налаштував його та створив нове ядро. Коли нове ядро ​​було на місці, все працювало чудово. Не впевнений, це був рівень патчу ядра чи конфігурація, але він зараз працює.


1

Дякую за ваш пост. Я працював над IPv6 над BTLE минулого року, і я стикався з точно тим же питанням, що і ви. Приблизно через 39 секунд зв'язок IPv6 через BLE між моїм ведучим та підлеглому пристроєм відключається. Це сталося зі мною в ядрі Linux v4.1.x (і для головного, і для підлеглого). І головний, і ведений користуються одними і тими ж платформами (вибачте, що не можу розкрити жодної інформації про платформи через конфіденційність). Все, що я можу сказати, це те, що це платформа x86_64 з ОС Linux, побудована за допомогою платформи Yocto.

Тоді, що цікаво, мені вдалося отримати більш перспективні результати на ядрі 3.19. Я фактично використовував uBuntu 14.04 LTS на обох моїх платформах. Мені вдалося оновити версію BlueZ вручну з BlueZ v4.101 до BlueZ v5.x. Я не можу точно пригадати, яку версію BlueZ 5 я використовував. Потім я дотримувався кроків, схожих на ваш, і мені вдалося успішно його тримати протягом тривалого періоду. Я пам’ятаю, як пішов на вечерю після цього, і він все ще тримається через 30 хвилин. Тоді я продовжував виконувати тест цілу ніч, і зв’язок залишився!

Дякуємо, що надали мені цю інформацію, яку версію ядра Linux використовувати. Що стосується застосованого патча, можливо, він може бути пов’язаний із одним із застосованих патчів: https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/log/?id= refs / tags / v4.4.27 & qt = grep & q = 6 нижче


Я не в змозі додати коментарі, оскільки на даний момент у мене немає 50 репутації. Тому я просто хотів поділитися тим, що знаю.
anandan111
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.