블루투스가 통째로 사라졌을 때: Code 43과 잔류 전원
증상
노트북(Acer Nitro, Windows 11)에서 블루투스가 통째로 사라졌다.
- 설정에 블루투스 On/Off 토글이 아예 없다
- 장치 관리자에 "Bluetooth" 카테고리 자체가 없다
- 대신 USB 컨트롤러 아래에 노란 경고 아이콘이 하나 떠 있다: Unknown USB Device (Device Descriptor Request Failed)
- 재부팅해도 그대로다
- Wi-Fi 는 멀쩡하다
진단: 저 정체불명 장치가 범인일까
이 노트북의 무선 카드는 MediaTek MT7921 이다. Wi-Fi 와 블루투스가 한 장에 같이 붙어있는 콤보 카드인데, 구조가 이렇다.
- Wi-Fi 는 PCIe 로 연결. 그래픽카드나 SSD 가 쓰는 그 고속 통로다
- 블루투스는 내부 USB 로 연결. 겉으로는 안 보이지만, 메인보드 안쪽에서 USB 포트 하나를 차지하고 있다
즉 카드는 하나지만 통로가 둘이라, 한쪽만 죽을 수 있다. Wi-Fi 가 멀쩡한데 블루투스만 사라진 게 딱 그 모양이었다.
결정적 단서: 둘의 주소가 같았다
Windows 는 모든 장치에 대해 "이게 메인보드의 어디에 꽂혀 있는가"를 주소로 기록해둔다. 집 주소가 "시 → 구 → 동 → 번지" 순으로 좁혀지듯, 이 주소도 큰 부품에서 작은 자리로 좁혀진다. 그래서 두 장치의 주소를 뽑아 비교해봤다.
| 장치 | Windows 가 기록한 주소 |
|---|---|
| 정체불명 USB 장치 | ...#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS10) |
| 사라진 블루투스 라디오 (원래 자리) | ...#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS10)#USBMI(0) |
암호처럼 보이지만 조각을 하나씩 떼어보면 별거 아니다.
| 조각 | 읽는 법 |
|---|---|
ACPI |
메인보드가 "내 부품들은 이렇게 배치돼 있다"고 운영체제에 알려주는 표준 규격. 여기서는 "메인보드 기준 주소"라는 표시 정도로 읽으면 된다 |
XHCI |
USB 컨트롤러. USB 포트 전체를 관장하는 칩이다 |
RHUB |
루트 허브 (root hub). 그 컨트롤러에 매달린 포트들의 뿌리다 |
HS10 |
10번 포트. HS 는 High Speed(고속)의 약자다 |
USBMI(0) |
그 포트에 꽂힌 장치의 0번 통로. 포트보다 한 단계 더 안쪽이라는 뜻이다 |
정리하면 두 줄 다 "USB 컨트롤러 → 루트 허브 → 10번 포트" 를 가리킨다. 같은 자리다.
그리고 10번 포트는 이 노트북에서 내부 무선 카드가 물려있는 자리다. 블루투스 라디오가 원래 앉아있던 그 자리에, 지금은 정체불명 장치가 앉아있다. 즉 저 "정체불명 USB 장치"는 다른 무언가가 아니라 블루투스 라디오 본인이었다. 켜지려다 실패해서 이름표를 못 달고 있었을 뿐이다.
정황 증거도 하나 더 있다. 두 장치의 MAC 주소(네트워크 장치마다 부여되는 고유 번호)가 딱 1 차이 나는 연속 주소였다. Wi-Fi 가 ...:93 으로 끝나는데 블루투스가 ...:92 로 끝나는 식이다. 콤보 모듈이 두 기능에 연속된 번호를 할당하는 건 흔한 관행이라 같은 모듈이라는 심증을 굳혀준다. 다만 이건 어디까지나 방증이고, 확증은 포트 위치가 같다는 사실 쪽이다.
원인: 펌웨어가 멈춰 있었다
여기서 헷갈리기 쉬운 게 있다. "Device Descriptor Request Failed" 는 에러 코드가 아니라 장치 이름이다. 둘은 별개다.
- 이름:
Unknown USB Device (Device Descriptor Request Failed)- USB 드라이버가 장치의 자기소개를 못 받아냈을 때 임시로 붙여주는 이름이다 - 에러 코드: Code 43 - "드라이버가 이 장치에 문제가 있다고 보고했다"는 뜻이다. 공식 문서상 정식 명칭은
CM_PROB_FAILED_POST_START[1]
USB 장치는 연결되면 "나는 이런 장치야"라고 자기 소개를 보내야 한다. 이 자기소개 데이터를 장치 서술자(descriptor)라고 부른다. 응답이 없으면 Windows 는 그 장치를 정체불명으로 처리하고, 이름표 대신 위 문구를 붙인다.
즉 블루투스 칩이 전기는 들어와 있는데, 켜지다 말고 멈춰 있는 상태였다. 여기서 멈춘 건 Windows 가 아니라 칩 안의 펌웨어(firmware)다. 펌웨어는 칩 자체에 심어져 있는 작은 프로그램으로, Windows 와는 별개로 돌아간다. 이 구분이 이 글의 핵심이다. Windows 를 아무리 다시 켜도, 칩 안에서 멈춰버린 펌웨어는 그대로 남을 수 있다.
해결: 잔류 전원 빼기
- 완전 종료
- 충전기 분리
- 전원 버튼 길게 누르기 (Dell 공식 문서 기준 20초 [2]. 나는 넉넉하게 40~60초 눌렀다)
- 다시 켜기
끝. 블루투스가 즉시 돌아왔고, 페어링해둔 기기 6대(에어팟 2, 헤드셋, 키보드 2, 마우스)가 전부 다시 잡혔다.
왜 재부팅으로는 안 되고 이건 되나
여기가 이 글에서 제일 재밌는 부분이다.
핵심은 소프트웨어를 다시 켜는 것과, 칩에서 전기를 실제로 빼는 것은 다른 일이라는 점이다.
재부팅은 Windows 를 처음부터 다시 올린다. 소프트웨어 관점에선 완전한 초기화다. 하지만 재부팅은 보드에서 전기를 빼지 않는다. 멈춘 게 Windows 가 아니라 칩 안의 펌웨어였으니, 전기가 계속 들어오는 한 그 칩은 멈춘 그대로 남아있다. 재부팅을 아무리 해도 안 풀렸던 이유가 이거다.
빠른 시작(Fast Startup) 은 한술 더 뜬다. 이건 종료할 때 Windows 의 핵심부와 드라이버 상태를 통째로 파일 하나에 저장해두고(최대 절전 모드가 쓰는 그 hiberfil.sys 파일이다), 다음에 켤 때 그 저장본을 되살리는 방식이다 [3]. 즉 "종료 후 켜기"를 해도 장치들이 처음부터 초기화되는 게 아니라 저장된 상태로 되살아난다. 이상한 상태까지 같이 되살아날 수 있다는 뜻이다.
여기서 반전이 하나 있다. Windows 의 "다시 시작"은 빠른 시작 경로를 타지 않고 항상 완전히 처음부터 부팅한다 [3:1]. 그러니까 소프트웨어를 깨끗하게 초기화하고 싶다면 "종료 후 켜기"보다 "다시 시작"이 오히려 낫다. 직관에 어긋나지만 사실이다. 다만 이번 문제는 소프트웨어가 아니라 칩의 전기가 문제였으니, 둘 다 소용없었다.
그럼 완전 방전은 뭐가 다른가. 메인보드에는 전기를 잠깐 담아두는 축전기(capacitor) 가 많고, 전원을 꺼도 여기엔 미세한 전기가 남는다. Dell 은 이걸 flea power(잔류 전원) 라고 부르며, "전원을 끄고 배터리를 빼도 메인보드 축전기에 남아있는 전기"라고 공식 문서에 정의해뒀다 [2:1]. 충전기를 뽑은 채로 전원 버튼을 길게 누르면, 보드가 켜지려 하는데 공급되는 전기가 없으니 축전기에 남은 그 전기를 끌어다 쓰면서 소진해버린다. 그제서야 칩이 진짜로 전기가 끊긴 상태가 되고, 다시 켤 때 펌웨어가 처음부터 올라온다.
흔한 오해 하나: 이건 배터리를 방전시키는 게 아니다. Dell 의 정의가 그대로 답이다. 배터리를 아예 빼도 flea power 는 남는다. 즉 빠지는 건 보드 축전기에 갇힌 미세한 전하이지 배터리 잔량이 아니다. 원래는 배터리까지 분리하는 게 가장 확실하지만(Dell 공식 절차도 배터리 분리를 포함한다), 요즘 노트북은 배터리가 내장형이라 뜯기 번거로우니 "충전기 분리 + 전원 버튼 길게 누르기"가 현실적인 대체 방법인 셈이다.
교훈
-
"장치가 없다"와 "장치가 이름을 못 달았다"는 다르다. 장치 관리자에서 블루투스가 안 보인다고 카드가 죽은 게 아니다. 정체불명 USB 장치의 정체를 파보니 그게 블루투스였다.
-
위치가 가장 강력한 증거다. "이 정체불명 장치가 블루투스인 것 같다"는 추측이지만, "둘이 같은 포트에 앉아있다"는 확증이다. 하드웨어 문제는 심증으로 좁히지 말고 위치로 특정하자.
-
"다시 켜기"와 "전기 빼기"는 다른 조치다. 재부팅은 소프트웨어를 처음부터 올리지만 칩에서 전기를 빼지는 않는다. 멈춘 게 드라이버가 아니라 칩 안의 펌웨어라면 재부팅으로는 영영 안 풀린다. 펌웨어가 멈춘 듯한 증상(Code 43, 장치 인식 실패)이면 방전을 먼저 시도하자. 제조사가 공식 문서에 넣어둔 표준 절차이고 [2:2], 부품을 건드리지 않으니 비용도 들지 않는다.
-
빠른 시작을 꺼두면 재발이 덜하다. 빠른 시작이 켜져 있으면 종료해도 장치가 저장해둔 상태에서 되살아난다. 끄면 종료할 때마다 장치가 처음부터 초기화되고, 부팅이 몇 초 느려지는 게 대가다. 레지스트리 값 하나(
HiberbootEnabled = 0)로 끌 수 있다.powercfg /h off명령으로도 꺼지지만 이건 최대 절전 모드까지 같이 없애버리니 주의.
참고 자료
Microsoft Learn, CM_PROB_FAILED_POST_START - "Error Code: 43", 표시 메시지 "Windows has stopped this device because it has reported problems. (Code 43)" ↩︎
Dell 공식 서비스 매뉴얼, Drain residual flea power (perform hard reset) - "flea power 는 전원을 끄고 배터리를 제거한 뒤에도 메인보드 축전기에 남아있는 잔류 전기"이며, 전원 버튼을 20초간 눌러 방전시키라고 안내한다 ↩︎ ↩︎ ↩︎
Microsoft Learn, Distinguishing Fast Startup from Wake-from-Hibernation - 빠른 시작은 커널 세션과 드라이버를
hiberfil.sys에 저장했다가 복원하는 하이브리드 종료다. "다시 시작"은 이 경로를 타지 않는다 ↩︎ ↩︎