Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0002d570d7 | ||
|
|
0a018c6c45 | ||
|
|
173596eec5 | ||
|
|
bf69f2e974 |
12
Documentation/bluetooth.md
Normal file
12
Documentation/bluetooth.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Bluetooth
|
||||||
|
|
||||||
|
We support `bluetoothctl` on host. Later we want also support bluetooth trought UI.
|
||||||
|
All pairs and settings are persistent over reboots and updates.
|
||||||
|
|
||||||
|
If you want setup bluetooth on host, use the *bluetoothctl* utility.
|
||||||
|
|
||||||
|
## Scan devices
|
||||||
|
|
||||||
|
```
|
||||||
|
[bluetooth]# scan on
|
||||||
|
```
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/hassos/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/hassos/Config.in"
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/libapparmor/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/libapparmor/Config.in"
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/apparmor/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/apparmor/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-bcm43xx/Config.in"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
global linux.bootargs.bootchooser="bootchooser.active=A"
|
||||||
|
|
||||||
boot system0
|
boot system0
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
global linux.bootargs.bootchooser="bootchooser.active=B"
|
||||||
|
|
||||||
boot system1
|
boot system1
|
||||||
|
|||||||
@@ -398,7 +398,7 @@ CONFIG_SHOWKEY=y
|
|||||||
CONFIG_AWK=y
|
CONFIG_AWK=y
|
||||||
CONFIG_FEATURE_AWK_LIBM=y
|
CONFIG_FEATURE_AWK_LIBM=y
|
||||||
CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y
|
CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y
|
||||||
# CONFIG_CMP is not set
|
CONFIG_CMP=y
|
||||||
# CONFIG_DIFF is not set
|
# CONFIG_DIFF is not set
|
||||||
# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set
|
# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set
|
||||||
# CONFIG_FEATURE_DIFF_DIR is not set
|
# CONFIG_FEATURE_DIFF_DIR is not set
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ BR2_PACKAGE_AVAHI=y
|
|||||||
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
||||||
BR2_PACKAGE_AVAHI_DAEMON=y
|
BR2_PACKAGE_AVAHI_DAEMON=y
|
||||||
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
|
||||||
BR2_PACKAGE_DHCP=y
|
BR2_PACKAGE_DHCP=y
|
||||||
BR2_PACKAGE_DHCP_CLIENT=y
|
BR2_PACKAGE_DHCP_CLIENT=y
|
||||||
BR2_PACKAGE_DROPBEAR=y
|
BR2_PACKAGE_DROPBEAR=y
|
||||||
|
|||||||
@@ -48,6 +48,8 @@ BR2_PACKAGE_AVAHI=y
|
|||||||
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
||||||
BR2_PACKAGE_AVAHI_DAEMON=y
|
BR2_PACKAGE_AVAHI_DAEMON=y
|
||||||
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
|
||||||
BR2_PACKAGE_DHCP=y
|
BR2_PACKAGE_DHCP=y
|
||||||
BR2_PACKAGE_DHCP_CLIENT=y
|
BR2_PACKAGE_DHCP_CLIENT=y
|
||||||
BR2_PACKAGE_DROPBEAR=y
|
BR2_PACKAGE_DROPBEAR=y
|
||||||
@@ -94,3 +96,4 @@ BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
|
|||||||
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
|
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
|
||||||
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
|
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
|
||||||
BR2_PACKAGE_APPARMOR=y
|
BR2_PACKAGE_APPARMOR=y
|
||||||
|
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ BR2_PACKAGE_AVAHI=y
|
|||||||
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
||||||
BR2_PACKAGE_AVAHI_DAEMON=y
|
BR2_PACKAGE_AVAHI_DAEMON=y
|
||||||
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
|
||||||
BR2_PACKAGE_DHCP=y
|
BR2_PACKAGE_DHCP=y
|
||||||
BR2_PACKAGE_DHCP_CLIENT=y
|
BR2_PACKAGE_DHCP_CLIENT=y
|
||||||
BR2_PACKAGE_DROPBEAR=y
|
BR2_PACKAGE_DROPBEAR=y
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ BR2_PACKAGE_JQ=y
|
|||||||
BR2_PACKAGE_E2FSPROGS=y
|
BR2_PACKAGE_E2FSPROGS=y
|
||||||
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||||
BR2_PACKAGE_SQUASHFS=y
|
BR2_PACKAGE_SQUASHFS=y
|
||||||
BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
|
|
||||||
BR2_PACKAGE_RPI_FIRMWARE=y
|
BR2_PACKAGE_RPI_FIRMWARE=y
|
||||||
|
BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
|
||||||
BR2_PACKAGE_GPTFDISK=y
|
BR2_PACKAGE_GPTFDISK=y
|
||||||
BR2_PACKAGE_GPTFDISK_SGDISK=y
|
BR2_PACKAGE_GPTFDISK_SGDISK=y
|
||||||
BR2_PACKAGE_UBOOT_TOOLS=y
|
BR2_PACKAGE_UBOOT_TOOLS=y
|
||||||
@@ -48,6 +48,8 @@ BR2_PACKAGE_AVAHI=y
|
|||||||
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
||||||
BR2_PACKAGE_AVAHI_DAEMON=y
|
BR2_PACKAGE_AVAHI_DAEMON=y
|
||||||
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
|
||||||
BR2_PACKAGE_DHCP=y
|
BR2_PACKAGE_DHCP=y
|
||||||
BR2_PACKAGE_DHCP_CLIENT=y
|
BR2_PACKAGE_DHCP_CLIENT=y
|
||||||
BR2_PACKAGE_DROPBEAR=y
|
BR2_PACKAGE_DROPBEAR=y
|
||||||
@@ -94,3 +96,4 @@ BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
|
|||||||
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
|
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
|
||||||
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
|
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
|
||||||
BR2_PACKAGE_APPARMOR=y
|
BR2_PACKAGE_APPARMOR=y
|
||||||
|
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ BR2_PACKAGE_JQ=y
|
|||||||
BR2_PACKAGE_E2FSPROGS=y
|
BR2_PACKAGE_E2FSPROGS=y
|
||||||
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
|
||||||
BR2_PACKAGE_SQUASHFS=y
|
BR2_PACKAGE_SQUASHFS=y
|
||||||
BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
|
|
||||||
BR2_PACKAGE_RPI_FIRMWARE=y
|
BR2_PACKAGE_RPI_FIRMWARE=y
|
||||||
|
BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
|
||||||
BR2_PACKAGE_GPTFDISK=y
|
BR2_PACKAGE_GPTFDISK=y
|
||||||
BR2_PACKAGE_GPTFDISK_SGDISK=y
|
BR2_PACKAGE_GPTFDISK_SGDISK=y
|
||||||
BR2_PACKAGE_UBOOT_TOOLS=y
|
BR2_PACKAGE_UBOOT_TOOLS=y
|
||||||
@@ -48,6 +48,8 @@ BR2_PACKAGE_AVAHI=y
|
|||||||
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
||||||
BR2_PACKAGE_AVAHI_DAEMON=y
|
BR2_PACKAGE_AVAHI_DAEMON=y
|
||||||
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
|
||||||
BR2_PACKAGE_DHCP=y
|
BR2_PACKAGE_DHCP=y
|
||||||
BR2_PACKAGE_DHCP_CLIENT=y
|
BR2_PACKAGE_DHCP_CLIENT=y
|
||||||
BR2_PACKAGE_DROPBEAR=y
|
BR2_PACKAGE_DROPBEAR=y
|
||||||
@@ -94,3 +96,4 @@ BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2"
|
|||||||
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
|
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
|
||||||
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
|
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
|
||||||
BR2_PACKAGE_APPARMOR=y
|
BR2_PACKAGE_APPARMOR=y
|
||||||
|
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ BR2_PACKAGE_AVAHI=y
|
|||||||
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
|
||||||
BR2_PACKAGE_AVAHI_DAEMON=y
|
BR2_PACKAGE_AVAHI_DAEMON=y
|
||||||
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS=y
|
||||||
|
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
|
||||||
BR2_PACKAGE_DHCP=y
|
BR2_PACKAGE_DHCP=y
|
||||||
BR2_PACKAGE_DHCP_CLIENT=y
|
BR2_PACKAGE_DHCP_CLIENT=y
|
||||||
BR2_PACKAGE_DROPBEAR=y
|
BR2_PACKAGE_DROPBEAR=y
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
VERSION_MAJOR=1
|
VERSION_MAJOR=1
|
||||||
VERSION_BUILD=4
|
VERSION_BUILD=5
|
||||||
|
|
||||||
HASSOS_NAME="HassOS"
|
HASSOS_NAME="HassOS"
|
||||||
HASSOS_ID="hassos"
|
HASSOS_ID="hassos"
|
||||||
|
|||||||
6
buildroot-external/package/bluetooth-bcm43xx/Config.in
Normal file
6
buildroot-external/package/bluetooth-bcm43xx/Config.in
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
config BR2_PACKAGE_BLUETOOTH_BCM43XX
|
||||||
|
bool "bluetooth bcm43xx"
|
||||||
|
depends on BR2_PACKAGE_BLUEZ5_UTILS_CLIENT
|
||||||
|
select BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED
|
||||||
|
help
|
||||||
|
Install bluetooth for bcm43xx.
|
||||||
18
buildroot-external/package/bluetooth-bcm43xx/bluetooth-bcm43xx
Executable file
18
buildroot-external/package/bluetooth-bcm43xx/bluetooth-bcm43xx
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
HCIATTACH=/usr/bin/hciattach
|
||||||
|
SERIAL=`cat /proc/device-tree/serial-number | cut -c9-`
|
||||||
|
B1=`echo $SERIAL | cut -c3-4`
|
||||||
|
B2=`echo $SERIAL | cut -c5-6`
|
||||||
|
B3=`echo $SERIAL | cut -c7-8`
|
||||||
|
BDADDR=`printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa))`
|
||||||
|
|
||||||
|
if [ "$(cat /proc/device-tree/aliases/uart0)" = "$(cat /proc/device-tree/aliases/serial1)" ] ; then
|
||||||
|
if [ "$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\,pins | cut -f 1 -d ' ')" = "16" ] ; then
|
||||||
|
$HCIATTACH /dev/serial1 bcm43xx 3000000 flow - $BDADDR
|
||||||
|
else
|
||||||
|
$HCIATTACH /dev/serial1 bcm43xx 921600 noflow - $BDADDR
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
$HCIATTACH /dev/serial1 bcm43xx 460800 noflow - $BDADDR
|
||||||
|
fi
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Bluetooth BCM43xx
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
BLUETOOTH_BCM43XX_VERSION = 1.0.0
|
||||||
|
BLUETOOTH_BCM43XX_LICENSE = Apache License 2.0
|
||||||
|
BLUETOOTH_BCM43XX_LICENSE_FILES = $(BR2_EXTERNAL_HASSOS_PATH)/../LICENSE
|
||||||
|
BLUETOOTH_BCM43XX_SITE = $(BR2_EXTERNAL_HASSOS_PATH)/package/bluetooth-bcm43xx
|
||||||
|
BLUETOOTH_BCM43XX_SITE_METHOD = local
|
||||||
|
|
||||||
|
define BLUETOOTH_BCM43XX_BUILD_CMDS
|
||||||
|
curl -o $(@D)/BCM43430A1.hcd https://raw.githubusercontent.com/RPi-Distro/bluez-firmware/master/broadcom/BCM43430A1.hcd
|
||||||
|
curl -o $(@D)/BCM4345C0.hcd https://raw.githubusercontent.com/RPi-Distro/bluez-firmware/master/broadcom/BCM4345C0.hcd
|
||||||
|
endef
|
||||||
|
|
||||||
|
define BLUETOOTH_BCM43XX_INSTALL_TARGET_CMDS
|
||||||
|
mkdir -p $(TARGET_DIR)/etc/systemd/system/hassos-hardware.target.wants
|
||||||
|
cp -f $(@D)/bluetooth-bcm43xx $(TARGET_DIR)/usr/sbin/
|
||||||
|
cp -f $(@D)/bluetooth-bcm43xx.service $(TARGET_DIR)/usr/lib/systemd/system/
|
||||||
|
ln -fs /usr/lib/systemd/system/bluetooth-bcm43xx.service $(TARGET_DIR)/etc/systemd/system/hassos-hardware.target.wants/
|
||||||
|
|
||||||
|
mkdir -p $(TARGET_DIR)/lib/firmware/brcm
|
||||||
|
cp -f $(@D)/BCM43430A1.hcd $(TARGET_DIR)/lib/firmware/brcm/
|
||||||
|
cp -f $(@D)/BCM4345C0.hcd $(TARGET_DIR)/lib/firmware/brcm/
|
||||||
|
|
||||||
|
mkdir -p $(TARGET_DIR)/etc/udev/rules.d
|
||||||
|
cp -f $(@D)/bluetooth-bcm43xx.rules $(TARGET_DIR)/etc/udev/rules.d/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
KERNEL=="ttyAMA[01]", PROGRAM="/bin/sh -c '\
|
||||||
|
ALIASES=/proc/device-tree/aliases; \
|
||||||
|
if cmp -s $ALIASES/uart0 $ALIASES/serial0; then \
|
||||||
|
echo 0;\
|
||||||
|
elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \
|
||||||
|
echo 1; \
|
||||||
|
else \
|
||||||
|
exit 1; \
|
||||||
|
fi\
|
||||||
|
'", SYMLINK+="serial%c"
|
||||||
|
|
||||||
|
KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\
|
||||||
|
ALIASES=/proc/device-tree/aliases; \
|
||||||
|
if cmp -s $ALIASES/uart1 $ALIASES/serial0; then \
|
||||||
|
echo 0; \
|
||||||
|
elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \
|
||||||
|
echo 1; \
|
||||||
|
else \
|
||||||
|
exit 1; \
|
||||||
|
fi \
|
||||||
|
'", SYMLINK+="serial%c"
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Bluetooth for BCM43xx
|
||||||
|
Before=bluetooth.service
|
||||||
|
After=dev-ttyAMA0.device
|
||||||
|
ConditionPathIsDirectory=/proc/device-tree/soc/gpio@7e200000/bt_pins
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
ExecStart=/usr/sbin/bluetooth-bcm43xx
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=hassos-hardware.target
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
[Policy]
|
||||||
|
AutoEnable=true
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/usr/lib/systemd/system/var-lib-bluetooth.mount
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/usr/lib/systemd/system/hassos-hardware.target
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=HassOS hardware targets
|
||||||
|
Documentation=man:systemd.target(5)
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Bluetooth persistent state
|
||||||
|
Requires=mnt-overlay.mount
|
||||||
|
After=mnt-overlay.mount
|
||||||
|
Before=bluetooth.service
|
||||||
|
|
||||||
|
[Mount]
|
||||||
|
What=/mnt/overlay/var/lib/bluetooth
|
||||||
|
Where=/var/lib/bluetooth
|
||||||
|
Type=None
|
||||||
|
Options=bind
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=hassos-bind.target
|
||||||
Reference in New Issue
Block a user