기록용으로 남깁니다.
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 가 실행이 제대로 안된 느낌이었습니다. 이에 대한 대비책(?)이 있을지는 천천히 찾아봐야겠습니다. 좋은 방법 있으면 알려주세요~~!!
'IT > System Digging' 카테고리의 다른 글
[linux] date 명령에 timezone 일시적으로 적용하기 (0) | 2024.09.05 |
---|---|
[openwrt] flash 읽기 쓰기 테스트 (0) | 2024.07.16 |
pageant 자동 실행 사용하기 (0) | 2024.06.12 |
[zenmap] 실행 파일 못찾는 오류 발생시 (0) | 2024.06.10 |
[sshd] Ubuntu 에서 사용자 별로 로그인 방법 다르게 지정하기 (0) | 2024.04.29 |