Sailfish OS - Hardware Adaptation Development Kit - Bluetooth на Qualcomm устройствах

При портировании на устройства Qualcomm sailfish os придётся помучатся и даже пропатчить ядрышко. Всё потому что BT рулится будет через HCISMD
Sailfish OS - Hardware Adaptation Development Kit - Bluetooth на Qualcomm устройствах


Первым делом идём в ядро делаем make menuconfig ARCH=arm нажимаем / и ищем CONFIG_BT_HCISMD если есть - то радость и просто включаем. Если нет, то придётся патчить!
Патч берём тут если будет ошибка:
Код BASH:
  1. ../../../../../../kernel/huawei/msm8909/drivers/bluetooth/hci_smd.c: In function 'hci_smd_register_smd':
  2. ../../../../../../kernel/huawei/msm8909/drivers/bluetooth/hci_smd.c:493:6: error: 'struct hci_dev' has no member named 'destruct'
Просто закомментируйте данную строчку. Просто патч для старого ядра.

Далее по аналогии с WiFi приводим всё в приличное состояние
1 - скрипт запуска:
Код BASH:
  1. #!/bin/sh
  2.  
  3. # Maximum number of attempts to enable hcismd to try to get
  4. # hci0 to come online. Writing to sysfs too early seems to
  5. # not work, so we loop.
  6. MAXTRIES=15
  7.  
  8. #setprop bluetooth.hciattach true
  9. setprop ro.qualcomm.bt.hci_transport smd
  10. setprop qcom.bt.dev_power_class 2
  11. setprop qcom.bt.le_dev_pwr_class 2
  12.  
  13. i=1
  14. while [ ! $i -gt $MAXTRIES ] ; do
  15. rfkill unblock all
  16. echo 1 > /sys/module/hci_smd/parameters/hcismd_set
  17. if [ -e /sys/class/bluetooth/hci0 ] ; then
  18. rfkill unblock all
  19. hciconfig hci0 up
  20. # found hci0, exit successfully
  21. echo 0 > /sys/module/hci_smd/parameters/hcismd_set
  22. bt_mac=$(/system/bin/hci_qcomm_init -e -p 2 -P 2 -d /dev/ttyHSL0 2>1 | grep -oP '([0-9a-f]{2}:){5}([0-9a-f]{2})')
  23. echo "BT MAC: $bt_mac"
  24. if [ ! -z "$bt_mac" ] ; then
  25. echo $bt_mac > /var/lib/bluetooth/board-address
  26. echo "BT MAC: $bt_mac"
  27. fi
  28. echo 1 > /sys/module/hci_smd/parameters/hcismd_set
  29. exit 0
  30. fi
  31. sleep 1
  32. if [ $i == $MAXTRIES ] ; then
  33. # must have gotten through all our retries, fail
  34. exit 1
  35. fi
  36. $i++
  37. done
  38. rfkill unblock all
  39. hciconfig hci0 up
  40.  
Кладём его в /usr/bin/droid/droid-hcismd-up.sh и не забываем сделать
Код BASH:
  1. chmod +x /usr/bin/droid/droid-hcismd-up.sh
2 - создаём сервис файл:
Код BASH:
  1. [Unit]
  2. Description=Enable Bluetooth HCI over SMD
  3. After=droid-late-start.target
  4. Before=bluetooth.service
  5. Conflicts=shutdown.target actdead.target
  6.  
  7. [Service]
  8. Type=oneshot
  9. ExecStart=/bin/sh /usr/bin/droid/droid-hcismd-up.sh
  10. RemainAfterExit=yes
  11.  
  12. [Install]
  13. WantedBy=bluetooth.service
Кладём его в /lib/systemd/system/droid-hcismd-up.service
И включаем в systemd
Код BASH:
  1. systemctl enable droid-hcismd-up
Комментарии (0)

Нет комментариев. Ваш будет первым!

Copyright 2016-2024 NeoChapay