Fedora 26에서 두 개의 Bluetooth 장치, 마우스 및 키보드를 페어링하려고 합니다. 저도 윈도우 10이 설치되어 있습니다. 내가 한 일은 다음과 같습니다. Linux와 Windows에서 페어링했지만 Windows에서 얻은 키를 삽입하려고 하면 [LinkKey]
위에서 언급한 항목을 찾을 수 없습니다.내가 따르는 지침
다음은 장치 중 하나에 대한 정보 파일에 있는 내용입니다.
[General]
Name=Designer Mouse
Appearance=0x03c2
AddressType=static
SupportedTechnologies=LE;
Trusted=true
Blocked=false
Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;0000180a-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb;00001812-0000-1000-8000-00805f9b34fb;
[IdentityResolvingKey]
Key=D8F3A0A146FEB991BF2ECD9756C8BDFA
[LocalSignatureKey]
Key=23AB7AF05C5AC930F9322CF44114856B
Counter=0
Authenticated=false
[LongTermKey]
Key=D2681BEA8B2C177B1AB8786F22C89DBB
Authenticated=0
EncSize=16
EDiv=48309
Rand=10283782112900107958
[DeviceID]
Source=2
Vendor=1118
Product=2053
Version=272
[ConnectionParameters]
MinInterval=6
MaxInterval=6
Latency=60
Timeout=300
투어 가이드에 따르면 입구여야 하는데 [LinkKey]
입구가 없습니다.
Windows에서 키를 얻었으며 위에서 언급한 방법도 시도했습니다.이 문제
답변1
문제는 귀하의 장치가 Bluetooth LE(저에너지) 장치이고 다르게 처리된다는 것입니다. 듀얼 부팅을 위해 Microsoft 3600 마우스를 설정하는 데 도움이 되는 다음 두 가지 솔루션을 찾았습니다.
여기에서 Bluetooth LE 장치를 사용하여 이 작업을 수동으로 수행하는 방법에 대한 튜토리얼을 확인하세요.http://console.systems/2014/09/how-to-pair-low-energy-le-bluetooth.html
주요 단계는 다음과 같습니다.
- Linux의 첫 번째 쌍
- 재시작
- Windows에서 페어링
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys\{computer-bluetooth-mac}\{device-bluetooth-id}에서 키 값을 가져옵니다.
- SYSTEM\Select에서 찾을 수 있는 ControlSet001 또는 ControlSet002일 수 있지만 일반적으로 ControlSet001입니다.
예를 들어 chntpw(Linux에서) cd {PATH_TO_WINDOWS_PARTITION}/Windows/System32/config/
chntpw -e SYSTEM을 사용하여 이 작업을 수행할 수 있습니다.- /var/lib/bluetooth/{computer-bluetooth-mac}으로 이동합니다.
- 매우 유사한 장치 블루투스 ID에 대한 디렉토리를 확인하십시오(다시 페어링할 때마다 변경될 수 있으므로 일반적으로 약간 다릅니다).
- 장치 ID와 일치하도록 디렉터리 이름을 바꿉니다.
- 이름이 바뀐 디렉터리에서 정보 파일을 편집합니다.
- 다음 값을 복사합니다.
IRK
Key
입력하다IdentityResolvingKey
CSRK
Key
입력하다LocalSignatureKey
LTK
Key
입력하다LongTermKey
ERand
intoRand
: 16진수 값을 얻습니다.ab cd ef, 바이트 역방향(EF CD ab) 이를 십진수로 변환합니다(예: 계산기 앱의 프로그래밍 모드 사용).EDIV
intoEDiv
: 16진수 값을 가져와 정상적으로 변환하거나 표시되는 경우 10진수 값을 직접 사용합니다(chntpw가 표시함)
- 재시작
또는
Mygod에서 제공하는 Python 스크립트를 사용하여 다음 단계를 수행하십시오.
https://gist.github.com/Mygod/f390aabf53cf1406fc71166a47236ebf
저는 스크립트를 사용했고 Groups 의 Key 항목 LongTermKey
과 group의 및 항목을 복사했습니다 .LocalSignatureKey
IdentityResolvingKey
EDiv
Rand
LongTermKey
수동 경로 연결 시 고려 사항
저에게는 실제로 효과가 없었기 때문에 사용하지 않았습니다. 하지만 다른 사람에게도 효과가 없다면 다음과 같은 일반적인 해결 방법을 따르세요.
- 이 튜토리얼에서는 이에 대해 언급하지 않지만 IRK 항목이 있는 경우 해당 값을
IdentityResolvingKey
키에 복사하세요. - KeyLength를 EncSize에 복사하지 마십시오. 그냥 그대로 놔두세요(저의 경우 16개)
- 장치 이름이 정확히 동일하지 않은 경우 디렉터리를 이동하는 것을 잊지 마십시오.
- 내 경우에는 다섯 번째 세트에서 각 페어링을 계산합니다.
이 스크립트에 대한 추가 도움말은 다음과 같습니다.
- 리눅스에서 실행됩니다.
- Windows 파티션을 마운트해야 합니다.
- 명령은 다음과 같아야 합니다.
./export-ble-infos.py -s {PATH_TO_WINDOWS_PARTITION}/Windows/System32/config/SYSTEM
- SYSTEM 파일을 다른 위치에 복사하고 다음 명령을 사용하여 경로를 전달할 수도 있습니다.
-s {PATH}
- SYSTEM 파일을 다른 위치에 복사하고 다음 명령을 사용하여 경로를 전달할 수도 있습니다.
- Windows가 LE가 아니거나 적어도 이 형식이 아닌 다른 Bluetooth 장치가 있다는 것을 알게 되면 충돌이 발생합니다.
답변2
이전 답변에 설명된 방법을 시도했습니다(예: 튜토리얼 따르기).http://console.systems/2014/09/how-to-pair-low-energy-le-bluetooth.html) Windows 10 및 Ubuntu 18.04m LTS 이중 부팅 구성을 사용하는 Surface Book 2에서 원활하게 작동하도록 Surface 키보드를 설정합니다. 저는 직업을 가지고 있지 않습니다.
먼저 Ubuntu 18.04에서 Surface를 최대한 활용하려면 Jakeday 커널(https://github.com/jakeday/linux-surface). 둘째, Microsoft Surface 키보드(블루투스)를 사용하려면 최신 버전의 bluez(https://medium.com/@overcode/fixing-bluetooth-in-ubuntu-pop-os-18-04-d4b8dbf7ddd6).
아이디어는 페어링 순서를 반대로 바꾸고 Ubuntu에서 인증을 비활성화한 다음 키를 Windows 10 레지스트리에 복사하는 것입니다.
Windows 10에서 Surface 키보드를 페어링하세요. 그러면 장치에 대한 레지스트리 키가 생성됩니다.
우분투에서 재부팅하십시오.
- Ubuntu에서 키보드를 페어링하고 에서 키보드 Bluetooth 주소를 가져온 다음
Settings>Bluetooth
연결됨을 클릭하여Surface Keyboard
복사합니다Address
(내 시스템에서는 에 위치하므로CE:2E:25:B9:D1:0C
이 점을 명심하십시오!). - 터미널 콘솔을 열고 root: 를 입력합니다
sudo -i
. info
인증을 제거하려면 Bluetooth 프로필을 편집하세요 . 키보드 구성 디렉토리를 입력하십시오:cd /var/lib
. 해당 디렉터리의 내용을 나열하여 Bluetooth MAC 주소를 얻은ls
다음cd
키보드의 구성 폴더에 넣습니다. 내 시스템에서cd /var/lib/bluetooth/B8:31:B5:9A:5D:15/CE:2E:25:B9:D1:0C
마지막 숫자는 3단계의 키보드 Bluetooth 주소입니다. 즐겨 사용하는 편집기를 사용하여info
이 디렉터리의 파일을 열고 필드를[LocalSignatureKey]
Authenticated
로 변경false
하고[LongTermKey]
Authenticated
필드를 으로 변경합니다0
.info
내 컴퓨터에서 파일은 다음과 같습니다 .
[General] Name=Surface Keyboard Appearance=0x03c1 AddressType=static SupportedTechnologies=LE; Trusted=true Blocked=false Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;0000180a-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb;00001812-0000-1000-8000-00805f9b34fb;[ConnectionParameters] MinInterval=12 MaxInterval=12 Latency=20 Timeout=200 [DeviceID] Source=2 Vendor=1118 Product=2327 Version=304 [IdentityResolvingKey] Key=BAC8FF051F3EB6014D0B66678C725435 [LocalSignatureKey] Key=C7E1BDA700A3213E12463D801F4B4496 Counter=0 Authenticated=false [LongTermKey] Key=721CEF56A21CFD5CB0BEF8F565F7F5A6 Authenticated=0 EncSize=16 EDiv=44718 Rand=14981484917123435222
- Surface 키보드를 끄고(배터리 제거) Ubuntu를 다시 시작합니다.
- 설정 > Bluetooth > Surface 키보드에서 연결을 켜고 배터리를 다시 삽입하세요. 키보드가 연결되어 제대로 작동해야 합니다. 배터리를 제거하지 않고 다시 재부팅하여 키보드가 제대로 작동하는지 확인하세요.
- 파일을 저장/인쇄하여
info
키에 액세스하여 키보드의 Windows 10 레지스트리 키를 업데이트하세요. 제 경우에는 Windows 10 및 Ubuntu에 설치된 디스크에 파일을 저장했습니다(Windows 10 레지스트리에 데이터를 복사/입력할 수 있도록). - Surface 키보드를 끄고(배터리 제거) Windows 10으로 재부팅합니다.
PSTools's psexec
레지스트리를 편집하는 데 사용됩니다 . 먼저PSTools
다음에서 다운로드하세요.http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx. zip 파일의 압축을 풀고 관리자 권한으로 터미널 콘솔을 열고 압축을 푼 파일로 디렉터리를 변경한 후 를 실행하면psexec -s -i regedit.exe
페어링 키가 저장된 권한 있는 레지스트리 키에 액세스할 수 있습니다. - 파일의 키를
info
Surface 키보드의 Windows 레지스트리 키에 복사합니다. 먼저 키보드의 두 항목 이름을 바꿔야 합니다. 항해Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters
. 아래 항목Devices
과Keys
Surface 키보드에 해당하는 항목의 이름을 바꿉니다. 키보드가 페어링될 때마다 이전 페어링과 구별하기 위해 주소가 조금씩 변경됩니다. 제 경우에는 초기 Windows 10 페어링이 켜져 있었고ce2e25b810c
후속 Ubuntu 페어링도 켜져 있었습니다CE:2E:25:B9:D1:0C
(소문자 and를 제외하고 거의 동일한 주소이지만:
to가 증가한 점에 유의하세요). 원래 Windows 10 페어링 주소에 해당하는 레지스트리 이름을 마우스 오른쪽 버튼으로 클릭하고 이름을 Ubuntu 주소로 바꿉니다.b8
B9
레지스트리 키의 이름을 바꾼 후 내 시스템에서는 다음과 같이 표시됩니다.
info
파일 의 키를Keys/{MAC Address}/{Bluetooth Address}
레지스트리 키(\Keys\b831b59a5d15\ce2e25b9d10c
예제에서는)에 복사합니다. 먼저 필드를 마우스 오른쪽 버튼으로 클릭하고 Bluetooth 주소를 Ubuntu에서 페어링하는 데 사용된 주소로 업데이트합니다(예제에서는 원래 Windows 10의 "ce2e25b810c"와 Ubuntu의 "ce2e25b910c"가 16진수로 페어링됨)Modify
.Address
마찬가지로 Modify
다음 각 레지스트리 필드는 info
Ubuntu 파일의 데이터를 해당 Windows 10 레지스트리 필드에 복사/키 지정합니다.
IdentityResolvingKey
Key
값은IRK
레지스트리 필드로 들어갑니다. 수정 시에는 hex 항목을 삭제하고 8) 단계에서 저장한 파일Key
에서 hex 형식으로 입력합니다.info
LocalSignatureKey
Key
값 입력CSRK
LongTermKey
Key
입력하다LTK
Rand
Enter: DECIMAL 형식ERand
으로 파일의 데이터를 입력합니다.info
EDiv
EnterEDiv
: DECIMAL 형식으로 데이터를 입력합니다.
info
12. 파일 의 간격, 지연 및 시간 초과 값을 Device
레지스트리 키에 복사합니다(모두 DECIMAL 형식).
MaxInterval
입력하다LERemoteConnParamsIntervalMax
MinInterval
입력하다LERemoteConnParamsIntervalMin
Latency
입력하다LERemoteConnParamsLatency
Timeout
입력하다LERemoteConnParamsLSTO
- Windows를 다시 시작하고 Windows Bluetooth 서비스에 연결되는 Surface 키보드에 배터리를 다시 삽입합니다. 키보드를 다시 페어링할 필요 없이 Windows 10에서 Ubuntu 18.04로 또는 그 반대로 원활하게 부팅할 수 있어야 합니다.