Add bluetooth battery port autodetection

This commit is contained in:
Alexander Bantyev 2020-08-05 15:56:47 +03:00
parent fa48f88cba
commit c429e84e53
Signed by: balsoft
GPG Key ID: E081FF12ADCB4AD5
2 changed files with 15 additions and 4 deletions

View File

@ -107,6 +107,7 @@ with deviceSpecific; {
grub.device = "nodev"; grub.device = "nodev";
grub.efiInstallAsRemovable = true; # NVRAM is unreliable grub.efiInstallAsRemovable = true; # NVRAM is unreliable
}); });
kernelPackages = pkgs.linuxPackages_latest;
consoleLogLevel = 3; consoleLogLevel = 3;
extraModprobeConfig = "options ec_sys write_support=1"; extraModprobeConfig = "options ec_sys write_support=1";
kernel.sysctl."vm.swappiness" = 0; kernel.sysctl."vm.swappiness" = 0;
@ -141,6 +142,7 @@ with deviceSpecific; {
support32Bit = true; support32Bit = true;
extraConfig = '' extraConfig = ''
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
load-module module-bluetooth-policy auto_switch=2
''; '';
}; };
} }

View File

@ -2,8 +2,6 @@
""" """
A python script to get battery level from Bluetooth headsets A python script to get battery level from Bluetooth headsets
Shamelessly stolen from https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level
""" """
# License: GPL-3.0 # License: GPL-3.0
@ -63,17 +61,28 @@ def getATCommand(sock, line, device):
return True return True
def find_rfcomm_port(device):
uuid="0000111e-0000-1000-8000-00805f9b34fb"
proto = bluetooth.find_service(address=device, uuid=uuid)
if len(proto) == 0:
print("Couldn't find the RFCOMM port number")
return 4
else:
for j in range(len(proto)):
if 'protocol' in proto[j] and proto[j]['protocol'] == 'RFCOMM':
port = proto[j]['port']
return port
def main(): def main():
if (len(sys.argv) < 2): if (len(sys.argv) < 2):
print("Usage: bl_battery.py <BT_MAC_ADDRESS_1>[.PORT] ...") print("Usage: bl_battery.py <BT_MAC_ADDRESS_1>[.PORT] ...")
print(" Port number is optional (default = 4)") print(" Port number is optional")
exit() exit()
else: else:
for device in sys.argv[1:]: for device in sys.argv[1:]:
i = device.find('.') i = device.find('.')
if i == -1: if i == -1:
port = 10 port = find_rfcomm_port(device)
else: else:
port = int(device[i+1:]) port = int(device[i+1:])
device = device[:i] device = device[:i]