libusb: add README.md, explain linux udev rules

This commit is contained in:
Matthias Ringwald 2017-11-09 11:40:58 +01:00
parent 2888825a36
commit 304b2f4d7e
3 changed files with 46 additions and 11 deletions

View File

@ -53,19 +53,33 @@ setups, toolchains, programmers, and init scripts.
### libusb ### libusb
The quickest way to try BTstack is on a Linux or OS X system with an The quickest way to try BTstack is on a Linux or OS X system with an
additional USB Bluetooth module. The Makefile [port/libusb]() in requires additional USB Bluetooth dongle. It requires
[pkg-config](http://www.freedesktop.org/wiki/Software/pkg-config/) [pkg-config](http://www.freedesktop.org/wiki/Software/pkg-config/)
and [libusb-1.0](http://libusb.info) or higher to be and [libusb-1.0](http://libusb.info) or higher to be
installed. installed.
On Linux, its usually necessary to run the examples as root as the On Linux, the USB Bluetooth donle is usually not accessible to a regular user. You can:
kernel needs to detach from the USB module. - run the examples as root
- add a udev rule for your dongle to extend access rights to user processes
To add an udev rule, please create `/etc/udev/rules.d/btstack.rules` and add this
# Match all devices from CSR
SUBSYSTEM=="usb", ATTRS{idVendor}=="0a12", MODE="0666"
# Match DeLOCK Bluetooth 4.0 dongle
SUBSYSTEM=="usb", ATTRS{idVendor}=="0a5c", ATTRS{device}=="21e8", MODE="0666"
# Match Asus BT400
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", ATTRS{device}=="17cb", MODE="0666"
On OS X, its necessary to tell the OS to only use the internal On OS X, its necessary to tell the OS to only use the internal
Bluetooth. For this, execute: Bluetooth. For this, execute:
sudo nvram bluetoothHostControllerSwitchBehavior=never sudo nvram bluetoothHostControllerSwitchBehavior=never
You may need to reboot for the change to become active.
## Windows-WinUSB ## Windows-WinUSB
Although libusb basically works with the POSIX Run Loop on Windows, we recommend to use the Windows-WinUSB port that uses a native run loop and the native WinUSB API to access a USB Bluetooth dongle. Although libusb basically works with the POSIX Run Loop on Windows, we recommend to use the Windows-WinUSB port that uses a native run loop and the native WinUSB API to access a USB Bluetooth dongle.

View File

@ -7,7 +7,6 @@ COMMON += hci_transport_h2_libusb.c btstack_run_loop_posix.c le_device_db_fs.c
include ${BTSTACK_ROOT}/example/Makefile.inc include ${BTSTACK_ROOT}/example/Makefile.inc
# CC = gcc-fsf-4.9
CFLAGS += -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Werror -Wunused-parameter -Wredundant-decls -Wsign-compare CFLAGS += -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Werror -Wunused-parameter -Wredundant-decls -Wsign-compare
# CFLAGS += -Werror # CFLAGS += -Werror
@ -18,16 +17,9 @@ VPATH += ${BTSTACK_ROOT}/platform/embedded
VPATH += ${BTSTACK_ROOT}/platform/posix VPATH += ${BTSTACK_ROOT}/platform/posix
VPATH += ${BTSTACK_ROOT}/platform/libusb VPATH += ${BTSTACK_ROOT}/platform/libusb
ifeq ($(OS),Windows_NT)
LDFLAGS += -lws2_32
# assume libusb was installed into /usr/local
CFLAGS += -I/usr/local/include/libusb-1.0
LDFLAGS += -L/usr/local/lib -lusb-1.0
else
# use pkg-config # use pkg-config
CFLAGS += $(shell pkg-config libusb-1.0 --cflags) CFLAGS += $(shell pkg-config libusb-1.0 --cflags)
LDFLAGS += $(shell pkg-config libusb-1.0 --libs) LDFLAGS += $(shell pkg-config libusb-1.0 --libs)
endif
# use pkg-config for portaudio # use pkg-config for portaudio
# CFLAGS += $(shell pkg-config portaudio-2.0 --cflags) -DHAVE_PORTAUDIO # CFLAGS += $(shell pkg-config portaudio-2.0 --cflags) -DHAVE_PORTAUDIO

29
port/libusb/README.md Normal file
View File

@ -0,0 +1,29 @@
# BTstack Port for POSIX Systems with libusb library
The quickest way to try BTstack is on a Linux or OS X system with an
additional USB Bluetooth dongle. It requires
[pkg-config](http://www.freedesktop.org/wiki/Software/pkg-config/)
and [libusb-1.0](http://libusb.info) or higher to be
installed.
On Linux, the USB Bluetooth donle is usually not accessible to a regular user. You can:
- run the examples as root
- add a udev rule for your dongle to extend access rights to user processes
To add an udev rule, please create `/etc/udev/rules.d/btstack.rules` and add this
# Match all devices from CSR
SUBSYSTEM=="usb", ATTRS{idVendor}=="0a12", MODE="0666"
# Match DeLOCK Bluetooth 4.0 dongle
SUBSYSTEM=="usb", ATTRS{idVendor}=="0a5c", ATTRS{device}=="21e8", MODE="0666"
# Match Asus BT400
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", ATTRS{device}=="17cb", MODE="0666"
On OS X, its necessary to tell the OS to only use the internal
Bluetooth. For this, execute:
sudo nvram bluetoothHostControllerSwitchBehavior=never
You may need to reboot for the change to become active.