在几分钟的不活动(10百万?)之后,我的键盘就睡着了。我得按下钥匙,等5秒钟,我才能再用.
首先是一些技术细节:


我用蓝宝石做键盘配对。这是我找到的唯一进入密码的方法,因为蓝人管理员没有要求一个密码。
What我试过:
命令:
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[a-z ]*/& usbcore.autosuspend=-1/' /etc/default/grub
sudo update-grub2
reboot
cat /sys/module/usbcore/parameters/autosuspend
-1

配置+重新启动:
AutoEnable=true
FastConnectable=true还有其他想法吗?蓝牙选项?USB选项?键盘选项?也许是某种不让人烦扰的剧本+克隆人来维持它的生存?
(我知道"Mint不是Linux",但我希望与askubuntu Stack Exchange社区相比,你们更开放一些:-)
编辑:我连接了蓝牙耳机。看上去只有键盘睡着了。耳机保持清醒。我不能手动连接蓝曼管理器(右循环+连接)的键盘睡觉时,但我可以连接耳机。
发布于 2021-03-08 12:11:27
我有相同的键盘,相同的操作系统和同样的问题。对此有很多抱怨,但很难找到解决办法。
我做了大量的研究,我认为最好的办法是将蓝牙dongle设置在HID模式中,用于键盘。你基本上会“上传”配对与键盘上的适配器。然后适配器将自己管理与键盘的连接,显示自己是系统的常规USB键盘。您的TP适配器似乎有一个CSR 8150芯片组,应该可以工作。缺点:该适配器要么处于HID模式,要么处于常规HCI模式,其中它充当一般的蓝牙适配器。
你可以看到有人为另一个键盘做了这样的事情。它们的设置要求您安装VM;我认为可以轻松得多:
运行bccmd psget 0x3cd (可能使用sudo),并查看是否有错误。否则,蓝牙适配器应该是兼容的。我的适配器失败了(尽管据说我有一个CSR8150芯片组)。没有破坏任何东西,但也没有修复它。
使用活动键盘连接,运行hcitool con以获得键盘的MAC地址。接下来,使用hcitool dev获取蓝牙适配器的MAC地址。
将以下脚本(从链接的repo中提取并修改)保存为文本文件,并将这两个MAC地址放在第一行中:
#!/bin/sh
MAC=your_adapter_MAC
DEV=hci0
CTRL=your_keyboard_MAC
function die() {
echo "FATAL: $@" 1>&2
exit 1
}
function readKeys() {
export Key= EDiv= Rand=
export t= $(cat "/var/lib/bluetooth/$CTRL/$MAC/info" | sed -n -e '/^\[LongTermKey/,/^\[/p' | grep -E '^(Key|EDiv|Rand)=[A-F0-9]+运行脚本以root用户身份运行脚本,您的适配器应该设置为HID模式,不仅解决了重新连接问题,而且还可以在BIOS启动时使用HDD加密密码。)
if [ -z "$Key" ] || [ -z "$EDiv" ] || [ -z "$Rand" ]; then
return 1
fi
return 0
}
function toHex() { echo "obase=16; $1" | bc; }
function revbytes(){ local b=""; for ((i=2;i<=${#1};i+=2)); do b=$b${1: -i:2}; done; echo $b; }
function rev16(){ local b=""; for ((i=0;i<${#1};i+=4)); do b=$b${1: i+2:2}${1: i:2}; done; echo $b; }
function pad() { local b=000000000000000000000000000000000000000000000000000000$1; echo ${b: -$2*2:$2*2}; }
function makeToken() { echo $(echo $MAC|tr -d : )1482$(rev16 $(pad $(toHex $EDiv) 2))$(revbytes $(pad $(toHex $Rand) 8))$(rev16 $(pad $Key 16)); }
function formatToken() { local b=""; for ((i=0;i<${#1};i+=4)); do b="$b${1: i:4} "; done; echo $b | tr A-Z a-z; }
readKeys || die "Could not extract pairing keys"
token=$(formatToken $(makeToken))
[ ${#token} -eq 84 ] || die "Token $token has incorrect length"
echo "Writing $token to /dev/$DEV"
bccmd psload -s 0 /dev/stdin <<-EOF
// PSKEY_USR42
&02b4 = $token
// PSKEY_INITIAL_BOOTMODE
&03cd = 0002
&04b0 = 03c0 03cc 22c0
&04b1 = 01f9 0042
&04b2 = 02bf 03c0 03cc 02bd 000d 000e 215f
&04b8 = 0000
&04b9 = 0000
&04ba = 0001
&04f8 = 0000
&04f9 = 0001
&0538 = 100b
&0539 = 0001
&053a = 0001
&053b = 0000 0000 0000
&053c = 0002
&053d = 0000
&053e = 0002 0001 000a 0008 0010 0008 0020 0008 0040 0004 0080 0002 0140 0001 0200 0002
EOF
if [ $? -ne 0 ]; then
die 'write failed :-('
fi
bccmd psread | grep '&02b4'
echo "Make sure the above output is $token"K111运行脚本K212
以root用户身份运行脚本,您的适配器应该设置为HID模式,不仅解决了重新连接问题,而且还可以在BIOS启动时使用HDD加密密码。
https://unix.stackexchange.com/questions/626387
复制相似问题