본문 바로가기
💻️ SW Develop/IT

[OS] Ubuntu&Windows10 듀얼부팅 후 Bluetooth 연결 문제 해결 방법

by 밍벨로퍼 2023. 8. 13.

📌 최근, Windows10이 설치된 노트북에 Ubuntu를 동시에 사용하고자 듀얼부팅을 구축했는데, Bluetooth 디바이스인 Buds2 pro가 Ubuntu에서만 연결되는 문제가 발생했다. 고생 끝에 이를 해결하여, 해결 방법을 공유하고자 한다.

  1. Ubuntu || 연결 희망하는 Bluetooth 장치를 페어링한다.
  2. Windows10 || 재부팅 후 psExec를 Download한다.
    (psExec - 원래는 원격으로 명령을 실행하는 프로그램이나, 본 목적은 상위 권한인 시스템 권한으로 명령을 실행하는데 있다.)
    📁 psExec 다운로드 링크
  3. 설치 방법은 간단하다.
    PsTools.zip 파일을 압축해제 후 나온 PsTools 폴더를 C:/windows/system32 안에 넣는다.
    폴더에 넣은 후엔 내부의 psexec.exe와 psexec64.exe를 한번씩 실행해서 라이선스 동의를 해준다.
  4. Windos10 || Bluetooth 디바이스를 페어링한다. (연결이 안되도 일단 페어링까지만 한다.)
  5. Windos10 || CMD로 psExec 이용, Bluetooth 레지스트리 저장 및 캡처
    • 우선 cmd 실행할때 관리자 권한으로 실행한다.

cd c:/windows/system32/pstools

상기 명령어는 psexec를 사용하기 전에 
그 프로그램이 있는 곳으로 터미널 위치를 이동한다는 명령어이다. 
그대로 cmd에 붙여 넣어준다.

32bit
psexec.exe -s -i regedit /e C:\BTKeys.reg HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys
64bit
psexec64.exe -s -i regedit /e C:\BTKeys.reg HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys

이어서 상기 명령어도 cmd에 그대로 붙여 넣어준다.

Q. 본인 운영체제가 32비트로 설치되었는지 64비트로 설치되었는지 모르겠어요.
A. 그냥 한 번씩 붙여넣어봐라. 운영체제 안 맞아도 실행할 수 없다는 오류 팝업 하나 뜨고 끝이다.

위와 같이 regedit exited on [PC 이름] with error code 0. 이 나온다면 성공이다.

해당 명령어가 잘 수행이 되었으면 C:\에 BTkeys.reg 라는 레지스트리가 하나 보일거다.
메모장켜서 열기 -> 모든 파일로 설정 바꾸고 읽으면

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys]

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys\346f2456513a]
"283dc20df26f"=hex:99,78,9c,86,b7,33,50,08,a3,5e,56,eb,61,ad,d4,0b
"MasterIRK"=hex:a6,45,93,73,5c,71,49,5d,73,75,f4,7d,6b,31,82,f8

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys\346f2456513a\283dc20df26f]
"LTK"=hex:4a,f8,3d,3a,c1,32,98,77,d5,f8,58,d6,bd,af,5b,64
"KeyLength"=dword:00000010
"ERand"=hex(b):00,00,00,00,00,00,00,00
"EDIV"=dword:00000000
"IRK"=hex:f0,99,53,50,8c,f8,17,4d,0a,00,83,30,38,c6,33,d0
"Address"=hex(b):6f,f2,0d,c2,3d,28,00,00
"AddressType"=dword:00000000
"MasterIRKStatus"=dword:00000001
"AuthReq"=dword:00000020

이런게 보인다. 캡처를 하든, 복사를 하든 적어놓자.
다 적었으면 다시 cmd로 돌아가서

32bit
psexec.exe -s -i regedit
64bit
psexec64.exe -s -i regedit

상기 명령어를 입력하면 레지스트리 편집기가 나올 것이다.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys

해당 경로로 이동 후 하위 폴더를 클릭 하자.

저런 경로로 들어가면 상기 레지스트리가 나올건데 이걸 캡쳐하자. 이제 다시 우분투로 넘어가자.

  1. Ubuntu || [4. 과정] 에서 얻은 정보들을 Ubuntu에 덮어쓰기

우분투 켰으면 터미널 켜서 하기 명령어를 입력하자.

sudo apt install nautilus-admin -y

상기 명령어로 GUI로 루트 경로를 탐색할 수 있게 만들었다.

이제 우클릭하면

이런 식으로 'open as Administrator' , 즉 관리자 권한으로 열기가 생긴다.

클릭하고 암호를 두번 입력하면 우측 상단, 상기 사진의 내 폴더 자리에 관리자 최상위 폴더를 볼 수 있게 된다.

그 버튼을 눌러 루트 경로로 진입한 다음, 다음 경로로 따라 이동하자.

Administrator Root ➡️ var ➡️ bluetooth ➡️ [블루투스 수신기의 MAC 주소] ➡️ [블루투스 장치의 (내 경우 Buds2 pro) MAC 주소] ➡️ info

Q: 저는 블루투스 장치를 여러개 연결중이라 뭐가 모르겠는데요?
A: Bluetooth 설정에 들어가서 아래 사진의 Address을 확인하자.

[General]
Name=민구의 Buds2 pro
Class=0x244404
Appearance=0x0941
AddressType=public
SupportedTechnologies=BR/EDR;LE;
Trusted=true
Blocked=false
Services=00001101-0000-1000-8000-00805f9b34fb;0000110b-0000-1000-8000-00805f9b34fb;0000110c-0000-1000-8000-00805f9b34fb;0000110d-0000-1000-8000-00805f9b34fb;0000110e-0000-1000-8000-00805f9b34fb;0000111e-0000-1000-8000-00805f9b34fb;00001200-0000-1000-8000-00805f9b34fb;2e73a4ad-332d-41fc-90e2-16bef06523f2;a23d00bc-217c-123b-9c00-fc44577136ee;b4a9d6a0-b2e3-4e40-976d-a69f167ea895;d908aab5-7a90-4cbe-8641-86a553db0146;e7ab2241-ca64-4a69-ac02-05f5c6fe2d62;f8620674-a1ed-41ab-a8b9-de9ad655729d;

[LinkKey]
Key=616FE7F402A422C930C0A850D27DBF36
Type=7
PINLength=0

[IdentityResolvingKey]
Key=A64593735C71495D7375F47D6B3182F8

[PeripheralLongTermKey]
Key=4AF83D3AC1329877D5F858D6BDAF5B64
Authenticated=2
EncSize=16
EDiv=0
Rand=0

[SlaveLongTermKey]
Key=4AF83D3AC1329877D5F858D6BDAF5B64
Authenticated=2
EncSize=16
EDiv=0
Rand=0

[DeviceID]
Source=1
Vendor=117
Product=40979
Version=1

이런 메모가 열릴 것이다.
여기서 우리가 수정할 것은 다음과 같다.

PeripheralLongTermKey & SlaveLongTermKey의 두 LongTermKey에 해당하는 Key, EDiv, Rand와
IdentityResolvingKey의 Key가 그것이다.

차례대로
LongTermKey의 Key는 우리가 아까 메모해뒀던 BTKeys의 LTK
LongTermKey의 EDiv는 레지스트리 캡쳐의 EDiv 의 10진수 값
LongTermKey의 Rand도 레지스트리 캡쳐의 ERand 10진수 값 이다.

그리고

IdentityResolvingKey의 Key는 BTKeys의 MasterIRK 값을 입력해주자.

❗️이때, EDiv와 Rand는 hex로 16진수이다. 따라서 10진수로 변환해줌을 잊지 말자. 이때, 특수문자 전부 제거, 알파벳은 대문자로 변경해 주어야 한다. (맨 앞의 hex 또한 제거)

❗️EDiv는 그대로 10진수로 변환해주면 되나, Rand는 hex값의 순서를 뒤집은 후 전과 동일하게 10진수로 변환해주어야 한다.

진수 변환은 머리 아프기에, 아래와 같은 편리한 링크를 공유한다.
📁16진수(Hex)를 10진수(Decimal)로 바꿔주는 사이트

모든 것을 마쳤다면, 재부팅 후 블루투스 장치를 하나의 OS에서 페어링하면, 다른 OS에서 다시 장치 제거했다가 페어링 할 필요 없이, Connect 버튼만 누르면 바로 연결 된다.


*❗️필자의 경우는 OS가 바뀔 떄 한번에 페어링이 안되는 것뿐만 아니라,
애초에 듀얼부팅 설치 후 두 OS 전부에서 블루투스 기능 자체가 인식이 안되었다.
(Ubuntu의 경우, no bluetooth found <- status가 Activated 인데도!) *

이 경우, 만약 부팅할 때 ACPI BIOS Error ~~ 이런 문장이 뜬다면 메인보드 펌웨어 문제일 수 있으니, 메인보드 BIOS 펌웨어를 업데이트 해주자.
실제로 필자도 펌웨어 업데이트 후 블루투스 기능 자체가 인식 안되는 문제가 해결됨.