diff --git a/target/d211/demo128_nand/rootfs_overlay/etc/init.d/S40bluetooth b/target/d211/demo128_nand/rootfs_overlay/etc/init.d/S40bluetooth index d5f5f14d0..690023283 100755 --- a/target/d211/demo128_nand/rootfs_overlay/etc/init.d/S40bluetooth +++ b/target/d211/demo128_nand/rootfs_overlay/etc/init.d/S40bluetooth @@ -9,94 +9,105 @@ HCIATTACH_ARGS="-s 1500000 ${UART_DEV} any 1500000 flow nosleep" HCI_TOOL=/usr/bin/bt-hci-tool BTGATT_BIN=/usr/bin/btgatt-server BTGATT_ARGS="-i ${HCI_DEV} -s low -t public" -BT_LOCAL_NAME="DSL-ETAG" +BLUETOOTHD_BIN=/usr/libexec/bluetooth/bluetoothd +BT_LOCAL_NAME="AIC-BT" HCI_WAIT_TIMEOUT=10 ATTACH_PIDFILE=/var/run/hciattach.pid BTGATT_PIDFILE=/var/run/btgatt-server.pid +BLUETOOTHD_PIDFILE=/var/run/bluetoothd.pid wait_for_hci() { - "${HCI_TOOL}" wait "${HCI_DEV}" "${HCI_WAIT_TIMEOUT}" + "${HCI_TOOL}" wait "${HCI_DEV}" "${HCI_WAIT_TIMEOUT}" } bring_hci_up() { - "${HCI_TOOL}" up "${HCI_DEV}" -} - -set_hci_name() -{ - "${HCI_TOOL}" name "${HCI_DEV}" "${BT_LOCAL_NAME}" + "${HCI_TOOL}" up "${HCI_DEV}" } start_bt() { - echo "[BT] Init AIC8800..." - insmod /lib/modules/5.10.44/kernel/drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.ko - sleep 1 + echo "[BT] Init AIC8800..." + insmod /lib/modules/5.10.44/kernel/drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.ko 2>/dev/null + sleep 1 - killall hciattach 2>/dev/null - killall btgatt-server 2>/dev/null - rm -f "${ATTACH_PIDFILE}" "${BTGATT_PIDFILE}" + killall hciattach 2>/dev/null + killall bluetoothd 2>/dev/null + killall btgatt-server 2>/dev/null + rm -f "${ATTACH_PIDFILE}" "${BLUETOOTHD_PIDFILE}" "${BTGATT_PIDFILE}" - "${HCIATTACH_BIN}" ${HCIATTACH_ARGS} & - echo $! > "${ATTACH_PIDFILE}" + "${HCIATTACH_BIN}" ${HCIATTACH_ARGS} & + echo $! > "${ATTACH_PIDFILE}" - if ! wait_for_hci; then - echo "[BT] ERROR: ${HCI_DEV} not ready" - return 1 - fi + if ! wait_for_hci; then + echo "[BT] ERROR: ${HCI_DEV} not ready" + return 1 + fi - if ! bring_hci_up; then - echo "[BT] ERROR: failed to bring ${HCI_DEV} up" - return 1 - fi + if ! bring_hci_up; then + echo "[BT] ERROR: failed to bring ${HCI_DEV} up" + return 1 + fi - if ! set_hci_name; then - echo "[BT] WARN: failed to set controller local name" - fi - - echo "[BT] HCI ready" - - "${BTGATT_BIN}" ${BTGATT_ARGS} >/dev/null 2>&1 & - echo $! > "${BTGATT_PIDFILE}" - echo "[BT] GATT server started" + # 先启动 LE 广播 + hciconfig ${HCI_DEV} leadv 0 + sleep 1 + + # 启动 bluetoothd + "${BLUETOOTHD_BIN}" & + echo $! > "${BLUETOOTHD_PIDFILE}" + + # 启动 btgatt-server(设置广播数据,包含名称) + "${BTGATT_BIN}" ${BTGATT_ARGS} >/dev/null 2>&1 & + echo $! > "${BTGATT_PIDFILE}" + + echo "[BT] Bluetooth ready with GATT server" } stop_bt() { - if [ -f "${BTGATT_PIDFILE}" ]; then - kill "$(cat "${BTGATT_PIDFILE}")" 2>/dev/null - rm -f "${BTGATT_PIDFILE}" - else - killall btgatt-server 2>/dev/null - fi + hciconfig ${HCI_DEV} noleadv 2>/dev/null - if [ -f "${ATTACH_PIDFILE}" ]; then - kill "$(cat "${ATTACH_PIDFILE}")" 2>/dev/null - rm -f "${ATTACH_PIDFILE}" - else - killall hciattach 2>/dev/null - fi + if [ -f "${BTGATT_PIDFILE}" ]; then + kill "$(cat "${BTGATT_PIDFILE}")" 2>/dev/null + rm -f "${BTGATT_PIDFILE}" + else + killall btgatt-server 2>/dev/null + fi + + if [ -f "${BLUETOOTHD_PIDFILE}" ]; then + kill "$(cat "${BLUETOOTHD_PIDFILE}")" 2>/dev/null + rm -f "${BLUETOOTHD_PIDFILE}" + else + killall bluetoothd 2>/dev/null + fi + + if [ -f "${ATTACH_PIDFILE}" ]; then + kill "$(cat "${ATTACH_PIDFILE}")" 2>/dev/null + rm -f "${ATTACH_PIDFILE}" + else + killall hciattach 2>/dev/null + fi } case "$1" in - start) - start_bt - ;; - stop) - stop_bt - ;; - restart) - stop_bt - sleep 1 - start_bt - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 - ;; + start) + start_bt + ;; + stop) + stop_bt + ;; + restart) + stop_bt + sleep 1 + start_bt + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; esac exit $? diff --git a/target/d211/demo128_nand/rootfs_overlay/usr/bin/e_player b/target/d211/demo128_nand/rootfs_overlay/usr/bin/e_player new file mode 100755 index 000000000..b82637840 Binary files /dev/null and b/target/d211/demo128_nand/rootfs_overlay/usr/bin/e_player differ