Ubuntu: BCM94352Z Driver 설치

macOS 에선 아주 쉬웠던 일이, Linux 에선 어려웠다. 우분투를 쓰면서, 최근 몇년동안 하드웨어로 인해 고생을 했던 적이 없었는데, 이런 일을 다시 겪다니..

결론부터 말하자면, Wifi 는 잘 작동하지만, Bluetooth 는 사용할 수가 없다. 뭔가 방법이 보일 듯도 하지만, 어쨌든 아직까지는 찾질 못했다.

**
확실한 원인은 찾질 못했지만, 위의 사태(?)는 내 성급함이나, 실수 또는 편견 때문에 생긴 일일 수도 있다.
BCM94352Z 는, 리눅스에서도 잘 돌아간다. 다만, 설치에 약간 신경을 써야할 뿐.

BCM94352Z 는 다음과 같은 두가지 칩으로 구성돼 있다.

  • Broadcom BCM4352 – 2T2R 802.11ac(Wifi)
  • Broadcom BCM20702 – Bluetooth 4.0

먼저, Wifi 를 위해서는 bcmwl-kernel-source 꾸러미가 필요하다.
우분투 일파를 설치할 때, 초기 화면에서 ‘Normal Installation(일반 설치)’ 와 ‘3rd Party software for graphics and Wi-Fi hardware..‘를 선택하면, Wifi Driver 는 알아서 설치가 된다. 따라서, 반드시 이 부분을 선택해줘야 한다.
일반 설치는 꼭 해줘야 하는 지는 잘 모르겠지만, 아무튼 해주는 편을 택했다.

만약 최초 설치 시에 기회를 놓쳤다면(?), 또는 이번처럼 다른 카드를 사용하고 있다가 교체를 했다면, 드라이버를 따로 설치해주면 된다. 다만.. 꾸러미를 설치하려면 인터넷이 있어야 하는데, 인터넷은 안된다. 그 인터넷을 하려고 Wifi 를 구성하려는건데, 이 상황은 그야말로 모순이 아닐 수 없다.

방법은 있다. 꾸러미를 다른 PC에서 내려받은 후, 그 파일을 복사해 온 뒤, dpkg 를 통해 설치하면 된다.

Ubuntu Packages

sudo dpkg -i <꾸러미명>

그리고 재부팅하면 Wifi 가 잡혀있음을 확인할 수 있다.


그러나… Bluetooth 설치는 이렇게 쉽질 않다.

먼저, dmesg 를 통해 문제가 된 부분을 살펴본다.

dmesg | grep -i blue
[    8.754059] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
[    9.871024] Bluetooth: Core ver 2.22
[    9.871043] Bluetooth: HCI device and connection manager initialized
[    9.871046] Bluetooth: HCI socket layer initialized
[    9.871049] Bluetooth: L2CAP socket layer initialized
[    9.871055] Bluetooth: SCO socket layer initialized
[    9.994489] Bluetooth: hci0: BCM: chip id 63
[    9.995330] Bluetooth: hci0: BCM: features 0x07
[   10.011367] Bluetooth: hci0: BCM20702A
[   10.012157] Bluetooth: hci0: BCM20702A1 (001.002.014) build 0000
[   10.018966] bluetooth hci0: Direct firmware load for brcm/BCM20702A1-0489-e07a.hcd failed with error -2
[   10.018969] Bluetooth: hci0: BCM: Patch brcm/BCM20702A1-0489-e07a.hcd not found
[   10.326513] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   10.326515] Bluetooth: BNEP filters: protocol multicast
[   10.326519] Bluetooth: BNEP socket layer initialized
[   18.130754] Bluetooth: RFCOMM TTY layer initialized
[   18.130762] Bluetooth: RFCOMM socket layer initialized
[   18.130769] Bluetooth: RFCOMM ver 1.11

저작권 문제가 됐든 뭐가 됐든, 제대로된 드라이버를 Broadcom 측에서 리눅스 쪽으로 제공하지 않기 때문에 이런 현상이 생기는 듯 하다.
위에서 보는 바와 같이, ‘Direct firmware load for brcm/BCM20702A1-0489-e07a.hcd failed with error‘ 라고 오류가 발생했다.
결국, 이 파일을, 제대로된 위치에 복사해주면 만사는 해결된다.

아무튼 이 문제를 해결하기 위해서, Broadcom 이 아닌, 다른 사람들이 노력을 해놓긴 했는데, 그 중 하나가 바로 이곳이다.

여기에서 해당 파일을 내려받고, /lib/firmware/brcm 에 복사해주면, 오류는 사라지고, Bluetooth 는 제대로 작동한다.
저 파일만이 아닌 꽤 많은 파일을 위 페이지에서 찾을 수 있으니, 정확한 파일을 찾는게 핵심이다.

다만, 저 페이지 하단 부에 Nvram 관련된 얘기가 나오는데, 내 카드가 그에 해당하지 않나 생각했으나, 결국은 나와는 관계없는 얘기였다. 해당위치(/sys/firmware/efi/efivars)로 가봐도, nvram 으로 시작하는 파일은 없었다.

그건 그런데…
지금은 확인이 불가능하게 됐지만, 드라이버(hcd 파일)를 설치했고, 파일이 없다는 오류는 발생하지 않지만, 그 아래 부분에서 오류가 나는 경우가 있었다.
잘 기억은 나지 않지만, BNEP socket layer initialized, RFCOMM socket layer initialized 등이 실패했다는 문구를 본 듯 하다.

왜 이렇게 됐는지는 모르겠으나, 아마도 이런 저런 삽질(?)을 하다가 어딘가에서 설정이 꼬여버렸고, 그 결과가 저렇게 됐던 듯 한데, 저 상황에선 결국 블루투스 인식에 실패하고 말았다.

그러나, 아주 헛짓(?)을 하지 않는 한 저렇게 될 가능성은 높지 않을 듯 하니.. 위에 있는 대로만 절차를 밟으면 잘 되리라.. 바랄 뿐!

제대로 설치가 끝나면, Wifi/Bluetooth 모두 아무 문제없이 잘 작동한다.

안녕하세요. 글 남겨주셔서 고맙습니다.