임베디드 리눅스 개발 중 무선랜 모듈 인식 문제가 자주 골칫거리인데요, 이번에는 PICO-PI-IMX7 보드에서 Broadcom AP6212 (BCM43438) 칩셋 기반 무선랜을 사용하기 위해 고군분투한 과정을 공유해보려고 합니다.


🔍 문제 상황: wlan interface 미인식

먼저, ifconfig 또는 iwconfig 명령어로 네트워크 인터페이스를 확인했을 때 wlan0 인터페이스가 나타나지 않았습니다.

관련 이슈:


🛠️ 드라이버 및 펌웨어 설치 과정

1. 필수 패키지 설치

sudo apt update sudo apt install git wget unzip build-essential
 
 

2. 펌웨어 디렉토리 생성 및 이동

sudo mkdir -p /lib/firmware/brcm cd /lib/firmware/brcm

3. AP6212 (BCM43438) 펌웨어 다운로드

wget https://raw.githubusercontent.com/armbian/firmware/refs/heads/master/brcm/brcmfmac43430-sdio.bin
wget https://raw.githubusercontent.com/armbian/firmware/refs/heads/master/brcm/brcmfmac43430-sdio.txt
 

💡 Tip: 간혹 위 URL에서 파일이 삭제된 경우가 있으니, 다른 저장소를 찾아보거나 로컬에서 보드로 복사(scp)하는 방법을 활용하세요.

4. 파일 이동 및 이름 변경

sudo mv brcmfmac43430-sdio.bin /lib/firmware/brcm
sudo mv brcmfmac43430-sdio.txt /lib/firmware/brcm

cd /lib/firmware/brcm
mv brcmfmac43430-sdio.txt brcmfmac43430-sdio.pico-pi-imx7.txt
 
5. 드라이버 수동 로딩
# 여기서 실패
sudo modprobe -r brcmfmac
sudo modprobe brcmfmac

6. 불필요한 패키지 정리 및 펌웨어 재설치

# 필요 없는 거 삭제
sudo apt autoremove

# 여기서 실패
sudo apt install linux-firmware

🚨 문제점: 설치 중 용량 부족

설치 도중 linux-firmware 패키지가 시스템 용량 부족으로 설치되지 않는 문제가 있었습니다.
👉 이 경우, /var/cache/apt/archives 정리나 불필요한 패키지 삭제로 여유 공간을 확보하세요.

sudo apt clean
sudo apt autoremove

 


✅ 결론

드라이버 설치와 펌웨어 세팅을 마친 후 재부팅하고 나면, wlan0 인터페이스가 정상적으로 보드에 인식될지 모르겟으나 저는 일단 용량이 부족해서 실패 했습니다.

성공 했다면 이후 wpa_supplicant 또는 nmcli를 활용해 네트워크에 연결할 수 있습니다.


📌 마무리

임베디드 보드에서 Wi-Fi 연동은 항상 쉽지 않지만, 드라이버와 펌웨어의 존재 유무가 핵심입니다. 위 과정이 여러분의 PICO-PI-IMX7 보드 Wi-Fi 연결 문제 해결에 도움이 되길 바랍니다!

TechNexion의 PICO-IMX7은 ARM Cortex-A7 기반 SoM(System on Module)으로, IoT와 엣지 디바이스 개발에 적합한 플랫폼입니다. 이 포스트에서는 Pico Pro Maker Kit을 활용해 Ubuntu 22.04 이미지를 성공적으로 플래싱하고 부팅하는 과정을 다룹니다.


📦 PICO-IMX7 평가 키트 언박싱

PICO-PI-IMX7 Evaluation Kit에는 다음과 같은 구성품이 포함되어 있습니다:

  • PICO-IMX7 SoM (System on Module)
  • 베이스 보드
  • USB-C 케이블 (전원용)
  • 5핀 마이크로 USB 케이블 (데이터 전송용)

🎥 언박싱 영상 보기


⚙️ 부트 모드 설정

부팅 모드는 DIP 스위치를 통해 설정할 수 있으며, 관련 가이드는 아래 링크에서 확인할 수 있습니다:

🔧 Boot Mode 설정 문서


🛠️ 필요한 도구 및 이미지 다운로드

이미지 플래싱을 위해 다음 파일을 다운로드해야 합니다:

압축 해제 시 포함되는 주요 파일들:

.\imx-img-uuu-tool\multiboar\emmc_imx7_img.auto
.\imx-img-uuu-tool\imx7\pico-imx7\imx7-SPL
.\imx-img-uuu-tool\imx7\pico-imx7\imx7-u-boot.img
.\pico-imx7_pico-pi_ubuntu-22.04_qca9377_lcd-800x480_20240426.wic.bz2 (압축 해제 필요)
 

💻 이미지 플래싱 절차 (Windows 환경)

Windows에서 UUU(Universal Update Utility) 툴을 사용해 이미지를 플래싱합니다:

  1. UUU 설치 및 실행
    다운로드한 imx-mfg-uuu-tool_20210421.zip 압축을 해제합니다.
  2. .wic.bz2 파일 압축 해제
    .wic.bz2 파일을 Bzip2 압축 해제 툴로 풀어줍니다.
  3. 보드 연결
    • USB-C 포트를 통해 전원 공급
    • Micro USB 5핀 포트를 PC에 연결 (데이터 통신용)
  4. UUU 명령 실행
uuu -b emmc_imx7_img.auto imx7-SPL imx7-u-boot.img pico-imx7_pico-pi_ubuntu-22.04_qca9377_lcd-800x480_20240426.wic
 

💡 참고: 이 과정을 GUI로 보고 싶은 경우, 관련 영상을 참고하세요.


🔐 부팅 후 로그인

부팅 후 UART 또는 네트워크를 통해 접속하면 기본 계정 정보는 다음과 같습니다:

  • ID: ubuntu
  • PW: ubuntu

📚 참고 자료


✨ 마무리

이 과정을 통해 TechNexion PICO-IMX7 보드에 Ubuntu 22.04를 성공적으로 설치하고 부팅할 수 있습니다.

1. 줄바꿈(Line Ending) 문제 이해

  • Windows: CRLF (\r\n)
  • macOS (및 Unix/Linux): LF (\n)

윈도우와 맥에서 동일한 프로젝트를 개발할 때, 서로 다른 줄바꿈 문자 때문에 Git에서 불필요한 변경이 발생하거나, 특정 파일이 깨질 수 있습니다.


2. Git에서 줄바꿈 통일하기

(1) .gitattributes 파일 설정

저장소 루트에 .gitattributes 파일을 만들고 다음 내용을 추가하세요:

# 텍스트 파일의 줄바꿈을 LF로 강제
* text=auto eol=lf
 

이 설정을 하면:

  • Git은 체크아웃할 때 OS에 맞는 줄바꿈을 적용
  • 커밋할 때는 자동으로 LF로 변환

만약 줄바꿈을 강제하려면:

* text eol=lf
 

이렇게 하면 모든 텍스트 파일이 강제로 LF로 저장됩니다.


(2) 개별 사용자 Git 설정 변경

각 개발자는 로컬 Git 설정에서 줄바꿈을 자동 변환하도록 설정할 수 있습니다.

윈도우 사용자의 설정

git config --global core.autocrlf true
 
  • 체크아웃 시 CRLF로 변환
  • 커밋할 때는 LF로 변환

맥 사용자의 설정

git config --global core.autocrlf input
 
  • 커밋할 때만 LF 유지 (CRLF로 변경하지 않음)

3. VS Code 설정

VS Code에서는 LF를 강제할 수 있습니다.

  1. 파일 > 기본 설정 > 설정 (Settings)
  2. 검색창에 end of line 입력
  3. "Files: Eol" 옵션을 LF로 변경

또는, settings.json에 다음을 추가:

{
    "files.eol": "\n"
}
 

4. 기존 파일 줄바꿈 변경

이미 CRLF로 저장된 파일을 LF로 일괄 변경하려면:

find . -type f -exec dos2unix {} +
 

또는, VS Code에서 Ctrl + Shift + P → Change End of Line Sequence → LF 선택 후 저장.


이제 윈도우와 맥에서 동일한 줄바꿈을 유지하면서 개발할 수 있습니다! 🚀

맥에서 아나콘다를 삭제 하는 방법이 프로그램 삭제와 수동으로 삭제로 나눠지는 것 같다

 

conda를 지울껀데 conda를 통해서 anaconda-clean를 설치 후 지우는 건 이상해 보여서

conda를 통해서 확인하고 수동으로 지우는 방법을 택함

 

그래도 방법을 둘다 남겨둠

 

 

HAOS

테스트를 위한 duckdns 세팅

DuckDNS

설정 > 애드온

애드온

 

Duck DNS 검색

Duck DNS

 

Duck DNS 내용 확인

 

설치

설치 후 확인

 

Duck DNS

https://www.duckdns.org 사이트 접속 후 편한 방법으로 로그인, gmail 계정으로 로그인 함

원하는 서브 도메인 생성

 

HAOS 에서 작업

Duck DNS 플러그인의 구성 탭에 생성한 도메인 입력하고

duckdns 사이트에서 주는 token 입력

 

 yaml로 설정된 내역 확인

 

HAOS 포트에 대하여 포트 포워딩, 네트워크 환경에 따라 다름

기본적으로 포트포워딩이 끝나면

duckdus에 세팅하였던 도메인으로 http://xxxxx.duckdns.org:8123 으로 접속 확인

 

Nginx Proxy Manager

설정 > 애드온

Nginx Proxy Manager 검색 후 설치

이후 NPM 이라 말함

 

NPM 구성 탭 확인

 

haos ip 기준으로 81 번 포트로 접속

http://xxx.xxx.xxx.xxx:81/login 으로 접속

NPM 초기 로그인 정보는 admin@example.com / changeme

 

 

패스워드 변경

 

첫 접속 후 패스워드 변경하고 나면 NPM 대시보드가 표시됨

0 proxy hosts 확인

 

Proxy Hosts > Add Proxy Host

 

duckdns 에서 생성한 도메인에서 구분하고자 하는 서브 도메인 붙여서 이름 생성

ha를 붙여서 구분 ha.xxxxx.duckdns.org

 

SSL 탭에서 추가 설정

 

 

설정을 위해 File editor 추가 설치

HAOS > 애드온 > File editor

 

설치 후 사이드바에 표시하기 활성화

 

사이드바에 표시되는 것 확인

 

File editor 실행 시

폴더 클릭

 

폴더 모양 클릭 시 내용

여기서 configuration.yaml 선택 후 아래 내용 추가

 

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24

 

수정된 내역 확인

 

yaml 수정 후 haos 재시작

 

설정된 도메인으로 https://ha.xxxxx.duckdns.org 접근 되는지 확인

 

NPM 세팅 이후 NPM으로  https 접근 잘 되는 거 확인 한 후에는 DuckDNS 설치 했던 거는 제거 !

'IT' 카테고리의 다른 글

Windows와 macOS에서 함께 개발할 때 캐리지 리턴 설정  (0) 2025.02.15
맥에서 아나콘다 삭제  (0) 2024.11.01
vscode 내 git user 변경  (0) 2024.07.31
Project IDX 웹 IDE  (0) 2024.07.31
bash sleep  (0) 2024.07.31

+ Recent posts