2026년 4월 2일 목요일

[Fluid Ardule] USB 오디오 인터페이스가 초래한 전압 강하 현상

라즈베리파이 3B로 구성한 Fluid Ardule의 USB 포트에 오디오 인터페이스(Mackie Onyx Producer 2-2) 하나만을 꽂은 상태에서도 전압이 떨어지는 현상을 발견하였다. 다음은 'dmesg -w'를 실행해 놓은 뒤 Onyx를 꽂았을 때 나오는 화면 출력이다.


Undervoltage detected는 라즈베리파이의 입력 전압이 기준 이하로 떨어졌을 때(보통 4.63V 이하) 발생하는 것이라 한다. Voltage normalised는 전압이 다시 정상 범위로 돌아왔음을 의미한다. 단 하나의 USB 기기를 꽂았을 때에도 이러한 실정이니 키보드 컨트롤러와 아두이노 우노 등을 전부 꽂으면 어떻게 되겠는가. 가능한 해결 방법 중의 하나는 유전원 USB 허브를 사용하는 것. 또는 다음 사진과 같은 대용량 SMPS를 써서 각 장비에 분배하는 것이다.

Meanwell LRS-50-5 파워 서플라이. 출력은 5V 10A에 이른다. 


이것도 그렇게 간단한 일은 아니다. 우선 이 전원을 라즈베리파이에 공급하려면 마이크로USB male plug를 구해서 납땜을 해야 한다. 이론상 GPIO로 넣어도 되지만 보호회로를 거치지 않기 때문에 매우 조심해야 한다. 

이 전원은 아두이노의 +5V 단자에 연결한 뒤 이를 다시 USB 케이블로 라즈베리파이와 연결할 때에도 주의해야 한다. 두 기기에서 전압차이가 발생하면 USB 케이블로 전류가 역류할 수 있다. 안전하게 사용하려면 USB 케이블에서  VBUS선을 끊는 것이 바람직하다.

구입해야 할 부품 목록이 꼬리에 꼬리를 문다! 아직 여기에 다 쓰지 못한 자질구레한 부품이 곧 비행기를 타고 중국을 떠날 것이다. Fluid Ardule의 modular architecture 철학이 약간 훼손될 위기에 처했다. 예를 들어서 USB 오디오 인터페이스를 포기하고 I2C PCM5012A DAC를 택하는 것. 하지만 어쩌겠는가? 안정성이 더 중요하다. 이외에도 몇 가지의 아이디어가 더 있으나 실험을 해 본 뒤에 기록하려 한다.

 

2026년 4월 1일 수요일

[Fluid Ardule] 라즈베리파이 3B에서 USB DAC가 열심히 일할 때 LAN 작동이 멈춘다

DIY란 원래 고난의 연속이다. 비용을 더 들이지 않기 위해 현재의 조건에서 어떻게 해서든 문제를 풀어 보려고 애를 쓰지만, 결국 지금 쓰는 것보다 상위 기종의 물건(예: 라즈베리파이 3B -> 4B)을 구입하는 것보다 더 많은 것을 정신적으로, 그리고 시간적으로 지불하고 있는지도 모른다.  

문제의 시작은 이렇다. 

라즈베리파이의 부팅 시간을 줄이기 위해 자동으로 시작하는 서비스를 대폭 줄이고 개발을 위한 네트워크 연결도 오직 유선 LAN으로만 하도록 만들어 놓았다. 코딩 작업을 하는 노트북 컴퓨터도 평소에는 유선으로 연결하여 쓰기 때문이다. 그래서 Wi-Fi 연결이 아예 되지 않도록 /boot/firmware/config.txt 파일에 'dtoverlay=disable-wifi'까지 삽입한 상태였다.

그런데 오디오 출력을 위하여 Mackie Onyx Producer 2-2를 연결한 뒤 FluidSynth를 실행하여 조금만 작업을 하다 보면 여지없이 SSH 접속이 끊겼다. 이런 상태에서도 건반을 통한 FluidSynth 연주는 가능한 상태라서 시스템이 완전히 멈추는 것은 아니다. 그러나 IP 주소를 자동으로 다시 할당받아서 SSH 접속이 되기까지 상당한 시간을 기다려야 하니 이만저만 불편한 것이 아니다. rsyslog조차 설치되지 않아서 /var/log/syslog이 없는 상태였기에 문제의 원인을 파악하기가 힘들었다. 

이런 불안정한 상태로 며칠을 보내다가 드디어 syslog 파일에서 단서를 찾았다.

2026-03-31T21:46:40.082929+09:00 Fluidule systemd[1]: Stopped fluid_ardule.service - FluidArdule Main Service. 
2026-03-31T22:00:35.678924+09:00 Fluidule dhcpcd[562]: eth0: carrier lost 
2026-03-31T22:00:35.686337+09:00 Fluidule kernel: smsc95xx 1-1.1:1.0 eth0: Link is Down 
2026-03-31T22:00:35.736808+09:00 Fluidule dhcpcd[562]: eth0: deleting address fe80::6e6e:e891:4b4:14a9

'smsc95xx 1-1.1:1.0 eth0: Link is Down'이라는 메시지에 주목해 보자. smsc95xx는 USB 기반 Ethernet 컨트롤러이다. 하나의 컨트롤러가 LAN과 USB를 동시에 제어하는데, 만약 USB쪽에서 문제가 발생하면 LAN 연결도 끊어지게 된다는 것이다. 이는 라즈베이파이 3B의 설계 구조 한계라고 한다. ChatGPT에게 물어보았다.

🌐 인터넷 사례 많냐?

👉 네, 꽤 많습니다. 특히 다음 키워드로 흔합니다:

  • “raspberry pi 3 usb ethernet disconnect”
  • “pi 3 usb instability”
  • “smsc95xx link down”
  • “urb status -32 raspberry pi”

👉 포럼/깃허브/StackOverflow에 반복적으로 등장

SSH 접속이 끊어지기 직전의 로그에서는 '2026-03-31T21:00:45.230089+09:00 Fluidule kernel: usb 1-1.4: urb status -32'라는 기록이 남았다. 'urb status -32'는 USB 전송 실패를 뜻한다. 종합하자면 USB 버스에서 먼저 문제가 생긴 뒤 그 여파로 LAN까지 끊어지는 흐름과 일치한다.

이 문제를 극복하고자 방향을 바꾸기로 했다. 

유선 LAN은 쓰지 않고, 다시 Wi-Fi로 Fluid Ardule(라즈베리파이)을 연결하였다. Mackie Onyx는 유전원 USB 허브로 연결하니 SSH 접속이 끊어지는 일은 발생하지 않았다. 마지막으로  USB  건반은 라즈베리파이에 직접 연결하지 않고, 이전에 만들어 둔 USB MIDI host를 거쳐서 이를 MIDI 케이블로 Mackie Onyx에 연결하였다. 이렇게 하니 훨씬 안정적으로 작동하였다. 지난 1월에 쓴 USB MIDI host 제작기는 여기('옆길로 샌 Ardule Project - USB MIDI host to DIN MIDI converter 만들기는 좌절과 극복의 연속이었다')에 있다. 이 물건을 Fluid Ardule 생태계에 넣으려면 아두이노 우노를 하나 더 사야 한다! 이번 일을 통해 전통적인 MIDI의 단순함과 견고함을 확실히 알게 되었다. 

만약 일찌감치 라즈베리파이 4B를 사는 것으로 문제를 해결했다면 훨씬 편했을 수는 있다. 그러나 고생 속에서 얻을 수 있었던 값진 경험을 놓쳤을 수도 있다. 그리고 덤으로, 여전히 굳건히 생태계를 지키고 있는 전통 MIDI의 의미까지도. 게다가 라즈베리 파이 4B는 2GB 모델이 10만원이 넘는다(board-only, 아이씨뱅큐, 오늘 기준).

실은 건반을 쳤을 때 마치 서스테인 페달을 계속 누르고 있는 것처럼 note off 신호가 전달되지 않는 현상이 지속적으로 발생하여 골머리를 앓는 중이었다. USB를 안정화한 다음에는 훨씬 줄기는 했으나 아직 해결해야 할 숙제로 남았다.