У меня был этот вопрос о переполнении стека, но было предложено перенести сюда. Это было помечено для модераторского внимания, но я не уверен, как этот процесс работает, и я не получил никаких отзывов, поэтому решил, что задам вопрос здесь:
Я пытаюсь установить соединение Bluetooth Smart между двумя Raspberry PI, где я могу использовать IPSP (профиль поддержки интернет-протокола), чтобы я мог обмениваться данными по протоколу IPv6 с помощью 6LoWPAN.
Мне удалось успешно установить эту связь между Raspberry Pis и комплектом разработки Nordic nRF51, однако в качестве доказательства концепции я сейчас пытаюсь установить это соединение между двумя коробками Raspberry Pi без комплекта разработки Nordic nRF51.
Итак, мой первый шаг - настроить Raspberry Pis. Я сделал это с помощью шагов в nRF5 IoT SDK компании Nordic (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 всегда возвращает «Connection Handle 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 являются устройствами Broadcom Corp BCM20702A0 Bluetooth 4.0 (для получения информации об адаптере использовался lsusb ). Несмотря на то, что адаптеры указаны как Bluetooth 4.0, я смог успешно использовать их с комплектом разработки Nordic nRF51 для установления соединения 6LoWPAN.
После всех моих экспериментов, вот вопросы, которые у меня есть:
- Можно ли сделать то, что я пытаюсь сделать?
- Кто-нибудь смог успешно установить соединение 6LoWPAN между двумя устройствами Linux, которое могло бы сказать мне, что мне не хватает в моих шагах?
- Нужно ли, чтобы одно из устройств Bluetooth было совместимо с Bluetooth Smart 4.2, чтобы правильно установить это соединение?
- Кто-нибудь знаком с bluez, который может порекомендовать дополнительные шаги, чтобы попробовать?
Любая помощь будет принята с благодарностью.
Джон
РЕДАКТИРОВАТЬ 1:
Мне удалось установить соединение между Ubuntu 14.04 и Raspberry Pi, установив предварительно собранное ядро 3.19, загруженное отсюда: http://kernel.ubuntu.com/~kernel-ppa/mainline/linux-3.19. уг-очереди /2016-01-07-яркий /
Я до сих пор не понимаю, почему между двумя Raspberry Pis не работает, но если я найду решение, я опубликую его здесь.
РЕДАКТИРОВАТЬ 2:
Ubuntu 14.04 запускает Bluez 4, в то время как Raspberry Pis запускает Bluez 5. Так как я не смог соединить два Raspberry Pis (работает с Bluez 5), я решил, что попытаюсь соединить два экземпляра Fedora 23 с запущенным Bluez 5, чтобы увидеть, что-то не так с Блюз или Малиновый Пис. В моих экспериментах я испытывал то же поведение с двумя экземплярами Fedora 23, что и с двумя Raspberry pis (где соединение 6lowpan обрывается менее чем через 30 секунд после подключения).
Версия bluez для экземпляров Fedora 23 - 5.35, а версия bluez для Raspberry Pis - 5.23.
У кого-нибудь есть идеи, почему это происходит с Bluez 5.x?
Спасибо,