IT/System Digging

[ssh][minicom] 원격 ssh 로 minicom script 사용하기

심량 2024. 6. 14. 14:04

기록용으로 남깁니다.

 

USB 포트를 통해 시리얼로 연결된 장치가 있습니다.

이 장치는 두 개의 펌웨어( fw1.bin, fw2.bin)를 설치해야 업데이트를 할 수 있습니다.

기존에는 10대 이하의 장비에 일일이 접속해서 minicom -s 로 환경을 설정하고 쓰거나 minicom -b 115200 -D /dev/ttyUSB0 명령으로 실행해서 썼습니다.

minicom 으로 실행한 상태에서 xmodem 을 사용해서 펌웨어 이미지를 전송하고 장비 리셋을 시키는 구조였습니다.

더보기

예시
[start 엔터 키 입력

xm 엔터 키 입력

CCC 표시될 때 Ctrl + A, Z 입력, S 입력

아래 방향 키 두번 눌러서 xmodem 선택

fw1.bin 을 찾아 커서를 이동시킨 후 스페이스 바 키 눌러 선택

엔터키를 눌러 업데이트 진행

press any key 메시지 나오면 엔터 키 누르고

reset 엔터 키 입력 해서 리셋 잘 되는지 확인

 

위 과정 다시 반복하는데 파일 선택시 fw2.bin 만 다름

 

Ctrl + A, Z 입력, X 입력, 엔터 입력

 

위 내용을 보내는 방법을 찾는데 문서가 잘 나와있지 않았습니다. 그래서 최대한 예제들을 찾아 조합하고 gpt 도 괴롭혀보고 하다가 동작하는 내용을 찾았습니다.

더보기

예시

minicom -b 115200 -D /dev/ttyUSB0 -S minicom_script.txt

 

minicom_script.txt 내용

print "Starting upgrade firmware..."

send [start

send xm

! sx -vv fw1.bin

send [start

send xm

! sx -vv fw2.bin

send reset

print "Done upgrading!"

sleep 10

! killall -9 minicom

 

설명

send 는 문자열(보통 장비가 인식하는 명령)을 시리얼로 보냄

! 느낌표 빈칸 한개는 실행할 외부 명령어

여기에서는 sx 가 xmodem 으로 파일 전송하는 명령이라 사용했습니다.

print 는 없어도 됩니다. 아무 글씨도 안나오면 잘 되는지 불안해서 추가했습니다.

sleep 10 10초만큼 기다린다는 뜻입니다. 

! killall -9 minicom 은 이게 없으면 minicom 화면이 그대로 남아 있습니다. 그래서 이 명령으로 강제 종료시켜 minicom 화면을 빠져나옵니다.

여기까지는 잘 되었습니다. 그런데 이를 remote ssh 명령으로 실행시키니... 

No cursor motion capability (cm) 이란 오류 메시지와 함께 아무 일도 없이 끝나버렸습니다.

 

인터넷을 찾아보니 터미널을 linux-c-nc 로 바꿔서 쓰라고 합니다. 자세한 내용은 이 페이지를 참고하시기 바랍니다.

# minicom_script.txt, fw1.bin, fw2.bin 전송 한 후 아래 실행

TERM=linux-c-nc minicom -b 115200 -D /dev/ttyUSB0 -S minicom_script.txt

 

정상 실행됩니....는 아니네요. 실행 잘 되는 때도 있고 멈추는 때도 있습니다... 어쨌든 절반의 성공!!


멈췄던 원인은 다시 들어가보니 xmCCCCCCCC 만 잔뜩 표시되고 있더군요 xmodem 전송 명령인 sx 가 실행이 제대로 안된 느낌이었습니다. 이에 대한 대비책(?)이 있을지는 천천히 찾아봐야겠습니다. 좋은 방법 있으면 알려주세요~~!!