2021/8/29 기준으로 문제 해결된 펌웨어가 배포 대기 중입니다.
아래 포스트 참고하세요
https://www.clien.net/service/board/cm_rasp/16453520
Thanks chris!
간만에 내용이라 글을 쓰고 다시 테스트해보니 뭐가 바뀐건지 잘 안되는군요;
좀 더 체크해보고 업데이트 하겠습니다 ㅠㅜ
https://www.clien.net/service/board/cm_rasp/11898679
여기에 댓글로 썼었는데 말이죠... 라즈4는 괜찮아 졌는지 알았는데 공유기에 따라 여전 하더군요...
다시 정리할겸 글로 옮깁니다.
결론을 내자면 regdb에 한국 정보가 잘못되어 있는 문제입니다.
능력자 분들은 세세하게 세팅을 바꾸시겠지만 전 귀찮은고로 적당히 잘 동작하는 선으로 가이드 드립니다.
1. wireless-regdb 받기
라즈베리파이에 regdb 소스(?)를 받고 새로 빌드해서 쓸거에요.
참고로 관련 자료는 https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb <= 여기 있습니다.
git clone git://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git
2. db.txt 수정하기
이게 실제 설정이 있는 파일이고요 이걸 바이너리로 바꿔서(패키징해서?) 씁니다.
git clone 과정을 했으면 wireless-regdb 폴더가 생겼을겁니다. 일단 들어가고요.
cd wireless-regdb
db.txt 파일이 있을텐데 vi 쓰시던 pico쓰시던 수정합니다.
"country US"로 찾으면 미국 설정이 나오는데 복사하시고요.
"country KR"로 찾아서 한국 설정 나오면 제목 놔주고 내용에 미국 설정 붙여주세요.
완벽하려면 세부조정이 필요하겠지만 이래도 앵간히 동작 됩니다.
country KR: DFS-JP (2400 - 2483.5 @ 40), (30) # 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients (5150 - 5250 @ 80), (23), AUTO-BW (5250 - 5350 @ 80), (23), DFS, AUTO-BW # This range ends at 5725 MHz, but channel 144 extends to 5730 MHz. # Since 5725 ~ 5730 MHz belongs to the next range which has looser # requirements, we can extend the range by 5 MHz to make the kernel # happy and be able to use channel 144. (5470 - 5730 @ 160), (23), DFS (5730 - 5850 @ 80), (30) # 60g band # reference: section IV-D https://docs.fcc.gov/public/attachments/FCC-16-89A1.pdf # channels 1-6 EIRP=40dBm(43dBm peak) (57240 - 71000 @ 2160), (40)
수정 하면 대강 이런 분위기 일겁니다. 능력자 분들 세부 조정 해주세요~
3. 빌드 환경 준비
sudo apt install libssl-dev python-m2crypto python-pip pip install future
이 정도면 될텐데 환경에 따라서 추가 파일이 필요하실 수도 있습니다.
뭐 없는거 있따고 꿍시렁 거리면 설치해주세요.
4. 빌드
우선 안전을 위해 클린 돌립니다. 기본적으로 프리빌트된 DB가 따라와서 지워야 제대로 될겁니다.
make maintainer-clean
그리곤 실전 빌드!
make
5. 설치
이제 빌드한 db 파일을 적당한 위치에 놔주면 됩니다.
sudo make install
sudo PREFIX= make install
설치하면 적제적소에 복사가 됩니다. (요부분에 있는 문제가 이 방법이 안되는 원인으로 보입니다.)
6. 리부팅
우린 윈도우에서 배운 교훈이 하나 있죠. 새로운거 설치했으면 리부팅!
이제 대부분의 와이파이 연결이 안정적으로 될겁니다. 아마도...
수정해서 make install 후 재부팅을 했는데.. 부팅하면서 갱신된 regulatory 파일을 읽는데 실패하네요. signature가 잘 못된 것 같다고 합니다. 이 부분은 어떻게 해결해야 하셨는지 궁금합니다.
DB signature 생성 때문에 cfg80211 모듈은 public key 새로 넣어서 다시 빌드해서 써야할 분위기 같은데.. 혹시 재빌드 없이 변경하셨나요?
아.. 이거 아닌 것 같아요. Regulation DB와 key 업데이트하고 cfg80211 다시 빌드해서 signature 문제 없이 로딩되는 것까지 확인했는데.. brcm43455-sdio 드라이버는 전혀 영향을 받지 않습니다. 별도로 가지고 있는 firmware binary(아마도 brcmfmac43455-sdio.clm_blob)에서 regulation 정보를 로딩하는 것 같아요.
일단 제가 보기엔 소스 빌드 파일에 지정된 설치 폴더와 실제 사용하는 폴더가 다른 문제가 첫번쨰 같습니다.
정리하자면 설치폴더가 /lib/crda여야 하는데 /usr/lib/crda로 설치가 되고 있네요.
아래처럼 수동으로 /lib/crda로 내용들을 카피해주니 되는것 같이 돌아갑니다만 아직 충분히 확인은 못했습니다.
라즈 제로랑 라즈3에선 이렇게 해서 연결 문제가 어느 정도 해결 됐었는데 라즈4는 아직 잘 모르겠습니다.
sudo cp pi.key.pub.pem /lib/crda/pubkeys/
sudo cp regulatory.bin /lib/crda
아니면 아예 설치할때
sudo PREFIX= make install
로하는 방법도 가능해보이고요.
좀 더 확인해보고 확실한 방법이 나오는대로 공유하겠습니다!
별도의 usb wifi 장치를 달아야 할지...
확실한 방법 찾게 되면 공유 부탁드립니다. ;;;