Add scripts to automatically btattach serial-port / uart connected
Broadcom HCIs found on some Atom based x86 hardware
This commit is contained in:
		
							parent
							
								
									4730eabcd1
								
							
						
					
					
						commit
						9089a629a1
					
				
							
								
								
									
										33
									
								
								69-btattach-bcm.rules
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								69-btattach-bcm.rules
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| # Some devices have a bluetooth HCI connected to an uart, these needs to be | ||||
| # setup by calling btattach. The systemd btattach-bcm.service takes care of | ||||
| # this. These udev rules hardware-activate that service when necessary. | ||||
| # | ||||
| # For now this only suports ACPI enumerated Broadcom BT HCIs. | ||||
| # This has been tested on Bay and Cherry Trail devices with both ACPI and | ||||
| # PCI enumerated UARTs. | ||||
| 
 | ||||
| # Note we check for the platform device not for the acpi device, because | ||||
| # some DSDTs list multiple bluetooth adapters, but only some (or none) | ||||
| # are enabled. Only enabled adapters get a platform device created. | ||||
| ACTION!="add", GOTO="btattach_bcm_rules_end" | ||||
| SUBSYSTEM!="platform", GOTO="btattach_bcm_rules_end" | ||||
| 
 | ||||
| KERNEL=="BCM2E1A:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E39:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E3A:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E3D:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E3F:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E40:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E54:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E55:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E64:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E65:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E67:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E71:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E7B:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E7C:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E7E:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E95:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| KERNEL=="BCM2E96:00", TAG+="systemd", ENV{SYSTEMD_WANTS}="btattach-bcm@%k.service" | ||||
| 
 | ||||
| LABEL="btattach_bcm_rules_end" | ||||
							
								
								
									
										20
									
								
								bluez.spec
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								bluez.spec
									
									
									
									
									
								
							| @ -1,13 +1,19 @@ | ||||
| Name:    bluez | ||||
| Summary: Bluetooth utilities | ||||
| Version: 5.46 | ||||
| Release: 4%{?dist} | ||||
| Release: 5%{?dist} | ||||
| License: GPLv2+ | ||||
| URL:     http://www.bluez.org/ | ||||
| 
 | ||||
| Source0: http://www.kernel.org/pub/linux/bluetooth/bluez-%{version}.tar.xz | ||||
| Source1: bluez.gitignore | ||||
| 
 | ||||
| # Scripts for automatically btattach-ing serial ports connected to Broadcom HCIs | ||||
| # as found on some Atom based x86 hardware | ||||
| Source2: 69-btattach-bcm.rules | ||||
| Source3: btattach-bcm@.service | ||||
| Source4: btattach-bcm-service.sh | ||||
| 
 | ||||
| # https://github.com/hadess/bluez/commits/build-fixes-5.46 | ||||
| Patch0: 0001-build-Enable-BIND_NOW.patch | ||||
| Patch1: 0002-obexd-Fix-compilation-error-on-F27.patch | ||||
| @ -162,6 +168,11 @@ mkdir -p $RPM_BUILD_ROOT/%{_libdir}/bluetooth/ | ||||
| install -D -p -m0644 src/main.conf ${RPM_BUILD_ROOT}/etc/bluetooth/main.conf | ||||
| sed -i 's/#\[Policy\]$/\[Policy\]/; s/#AutoEnable=false/AutoEnable=true/' ${RPM_BUILD_ROOT}/%{_sysconfdir}/bluetooth/main.conf | ||||
| 
 | ||||
| #serial port connected Broadcom HCIs scripts | ||||
| install -D -p -m0644 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_udevrulesdir}/ | ||||
| install -D -p -m0644 %{SOURCE3} ${RPM_BUILD_ROOT}/%{_unitdir}/ | ||||
| install -D -p -m0755 %{SOURCE4} ${RPM_BUILD_ROOT}/%{_libexecdir}/bluetooth/ | ||||
| 
 | ||||
| %post libs -p /sbin/ldconfig | ||||
| 
 | ||||
| %postun libs -p /sbin/ldconfig | ||||
| @ -221,10 +232,13 @@ sed -i 's/#\[Policy\]$/\[Policy\]/; s/#AutoEnable=false/AutoEnable=true/' ${RPM_ | ||||
| %{_mandir}/man1/rctest.1.* | ||||
| %{_mandir}/man8/* | ||||
| %{_libexecdir}/bluetooth/bluetoothd | ||||
| %{_libexecdir}/bluetooth/btattach-bcm-service.sh | ||||
| %{_libdir}/bluetooth/ | ||||
| %{_localstatedir}/lib/bluetooth | ||||
| %{_datadir}/dbus-1/system-services/org.bluez.service | ||||
| %{_unitdir}/bluetooth.service | ||||
| %{_unitdir}/btattach-bcm@.service | ||||
| %{_udevrulesdir}/69-btattach-bcm.rules | ||||
| 
 | ||||
| %files libs | ||||
| %{!?_licensedir:%global license %%doc} | ||||
| @ -251,6 +265,10 @@ sed -i 's/#\[Policy\]$/\[Policy\]/; s/#AutoEnable=false/AutoEnable=true/' ${RPM_ | ||||
| %{_userunitdir}/obex.service | ||||
| 
 | ||||
| %changelog | ||||
| * Thu Sep 07 2017 Hans de Goede <hdegoede@redhat.com> - 5.46-5 | ||||
| - Add scripts to automatically btattach serial-port / uart connected | ||||
|   Broadcom HCIs found on some Atom based x86 hardware | ||||
| 
 | ||||
| * Mon Sep 04 2017 Bastien Nocera <bnocera@redhat.com> - 5.46-4 | ||||
| + bluez-5.46-4 | ||||
| - Patches cleanup | ||||
|  | ||||
							
								
								
									
										30
									
								
								btattach-bcm-service.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								btattach-bcm-service.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| # Simple shell script to wait for the tty for an uart using BT HCI to show up | ||||
| # and then invoke btattach with the right parameters, this is intended to be | ||||
| # invoked from a hardware-activated systemd service | ||||
| # | ||||
| # For now this only suports ACPI enumerated Broadcom BT HCIs. | ||||
| # This has been tested on Bay and Cherry Trail devices with both ACPI and | ||||
| # PCI enumerated UARTs. | ||||
| # | ||||
| # Note the kernel bt developers are working on solving this entirely in the | ||||
| # kernel, so it is not worth the trouble to write something better then this. | ||||
| 
 | ||||
| BT_DEV="/sys/bus/platform/devices/$1" | ||||
| BT_DEV="$(readlink -f $BT_DEV)" | ||||
| UART_DEV="$(dirname $BT_DEV)" | ||||
| 
 | ||||
| # Stupid GPD-pocket has USB BT with id 0000:0000, but still claims to have | ||||
| # an uart attached bt | ||||
| if [ "$1" = "BCM2E7E:00" ] && lsusb | grep -q "ID 0000:0000"; then | ||||
| 	exit 0 | ||||
| fi | ||||
| 
 | ||||
| while [ ! -d "$UART_DEV/tty" ]; do | ||||
| 	sleep .2 | ||||
| done | ||||
| 
 | ||||
| TTY="$(ls $UART_DEV/tty)" | ||||
| 
 | ||||
| exec btattach --bredr "/dev/$TTY" -P bcm | ||||
							
								
								
									
										6
									
								
								btattach-bcm@.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								btattach-bcm@.service
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| [Unit] | ||||
| Description=btattach for Broadcom devices | ||||
| 
 | ||||
| [Service] | ||||
| Type=simple | ||||
| ExecStart=/usr/libexec/bluetooth/btattach-bcm-service.sh %I | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user