diff --git a/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt.bb b/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt.bb new file mode 100644 index 0000000..b86c516 --- /dev/null +++ b/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt.bb @@ -0,0 +1,32 @@ +SUMMARY = "Enable bluetooth on Nanopi Neo Air boards" + +LICENSE="Apache-2.0" +LIC_FILES_CHKSUM = "file://${RESIN_COREBASE}/COPYING.Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +DESCRIPTION = "Package contains udev rule, systemd service and a script to init the Ampak 6212A \ +bluetooth chip for the Nanopi Neo Air board" + +S = "${WORKDIR}" + +SRC_URI = "file://99-nanopi-air-bt.rules \ + file://nanopi-air-bt@.service \ + file://nanopi-air-bt-start \ +" + +do_install() { + mkdir -p ${D}/usr/bin + mkdir -p ${D}/lib/udev/rules.d + install -m 0644 99-nanopi-air-bt.rules ${D}/lib/udev/rules.d + install -m 0744 nanopi-air-bt-start ${D}/usr/bin + + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/nanopi-air-bt@.service ${D}${systemd_unitdir}/system + fi +} + +FILES_${PN} = " \ + /lib/udev/rules.d/99-nanopi-air-bt.rules \ + /lib/systemd/system/nanopi-air-bt@.service \ + /usr/bin/nanopi-air-bt-start \ +" diff --git a/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/99-nanopi-air-bt.rules b/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/99-nanopi-air-bt.rules new file mode 100644 index 0000000..61d7e6b --- /dev/null +++ b/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/99-nanopi-air-bt.rules @@ -0,0 +1 @@ +ACTION=="add", SUBSYSTEM=="tty", ATTR{iomem_base}=="0x1C28C00", TAG+="systemd", ENV{SYSTEMD_WANTS}="nanopi-air-bt@'%E{DEVNAME}'.service" diff --git a/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/nanopi-air-bt-start b/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/nanopi-air-bt-start new file mode 100755 index 0000000..d1b2b5f --- /dev/null +++ b/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/nanopi-air-bt-start @@ -0,0 +1,17 @@ +#!/bin/sh + +if [ $# -lt 1 ]; then + echo "Interface argument missing ... /dev/ttyX" + exit 1 +fi + +echo 205 > /sys/class/gpio/export +echo out > /sys/class/gpio/gpio205/direction + +# Reset BT +echo "Resetting BT chip" +echo 0 > /sys/class/gpio/gpio205/value +echo 1 > /sys/class/gpio/gpio205/value + +/usr/bin/brcm_patchram_plus -d --patchram /lib/firmware/brcm/bcm43438a1.hcd --no2bytes --tosleep 5000 $1 > /tmp/brcm_log 2>&1 +hciattach -n $1 bcm43xx 115200 flow diff --git a/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/nanopi-air-bt@.service b/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/nanopi-air-bt@.service new file mode 100644 index 0000000..40f7b29 --- /dev/null +++ b/layers/meta-resin-allwinner/recipes-bsp/nanopi-air-bt/nanopi-air-bt/nanopi-air-bt@.service @@ -0,0 +1,9 @@ +[Unit] +Description=Ampak AP6212A Bluetooth HCI on Nanopi Neo Air + +[Service] +Type=simple +ExecStart=/bin/bash /usr/bin/nanopi-air-bt-start %I + +[Install] +WantedBy=multi-user.target