일회용 전자담배로 웹사이트 호스팅하기
(bogdanthegeek.github.io)- 일회용 전자담배에 내장된 저성능 ARM Cortex-M0+ 마이크로컨트롤러를 활용해 웹서버를 구동한 실험적 프로젝트
- 24KiB 플래시와 3KiB RAM을 가진 PUYA 사의 PY32F002B 칩을 분석, SLIP 방식으로 네트워크 연결 구현
- Semihosting과 SLIP 프로토콜, uIP TCP/IP 스택을 활용하여 가상 tty를 통해 TCP/IP 통신 및 HTTP 서버 기능을 포팅함
- 본래 매우 느렸으나 버퍼 최적화와 데이터 처리 개선을 통해 반응속도 및 페이지 로딩 속도 대폭 향상
- 저용량 메모리 환경에서도 동적 서버 코드 구동 및 API 엔드포인트 제공까지 실현
- 코드는 배포 중, 실질적 호스팅은 가능하지만 메모리 등 자원 제약이 큼
서문
- 본 글은 일회용 전자담배에서 직접 구동하는 웹서버로 서비스되는 것이 아니라 동일한 내용을 별도의 서버에서 제공함을 먼저 밝힘
- 실제 동작 예시는 http://ewaste.fka.wtf/에서 확인 가능함
배경
- 몇 년간 배터리를 재활용하려는 목적으로 지인들에게서 일회용 전자담배를 수집하였음
- 최근 일회용 전자담배 기기가 점점 고도화되어 USB-C와 재충전식 배터리가 탑재되기 시작한 것에 관심을 가짐
- 해체 중 PUYA라는 이름의 플래시 칩 내장 ARM Cortex-M0+ 마이크로컨트롤러를 발견, 저가 마이크로컨트롤러로 잘 알려진 칩임
- 해당 마이크로컨트롤러들을 여러 모델에서 수집하였고, 디버그 핀 라벨링이 되어 있어 분석이 용이함
사용한 하드웨어
- 칩 표시는
PUYA C642F15
였으며 실제로는 PY32F002B 계열로 추정 - 주요 제원:
- 24MHz Cortex-M0+ 코어
- 24KiB 플래시
- 3KiB RAM
- 여러 주변장치 존재하나 본 프로젝트에서는 미활용
- 일반 스마트폰 대비 성능이 낮지만, 임베디드 환경에서는 간이 웹 서버 구축이 충분히 가능함
네트워크 연결
- 최초 발상은 아니었으나, semihosting 개념을 실험하면서 웹서버 구동 아이디어를 착안
- Semihosting은 임베디드 ARM에서 syscall을 흉내내는 방법
- 레지스터에 값/포인터를 넣고 breakpoint 호출 시, 디버거가 이를 해석해 동작을 처리
- 일반적으로 로그 전송 용도지만, 양방향 데이터 통신이 가능
- USB 시리얼 디바이스들이 SLIP(Serial Line Internet Protocol) 프로토콜을 지원, 이를 활용해 네트워크 인터페이스로 사용
- Linux(및 일부 macOS)에서
slattach
와socat
등으로 가상 tty를 통한 SLIP 네트워크 환경을 구축pyocd gdb -S -O semihost_console_type=telnet -T $(PORT) $(PYOCDFLAGS) & socat PTY,link=$(TTY),raw,echo=0 TCP:localhost:$(PORT),nodelay & sudo slattach -L -p slip -s 115200 $(TTY) & sudo ip addr add 192.168.190.1 peer 192.168.190.2/24 dev sl0 sudo ip link set mtu 1500 up dev sl0
- TCP/IP 스택으로 uIP를 선택, 매우 작고 RTOS 불필요하며 포팅이 용이함
- uIP 예제 중 HTTP 서버 활용, SLIP 코드를 semihosting 방식에 맞춰 포팅하여 웹서버 기동에 성공
- ARM 구조에서 16비트 정렬 문제가 있어 filesystem 생성 스크립트 수정 및 Perl로 변환 처리 진행
속도 최적화
- 초기 상태에서는 ping 1.5초, 50% 패킷 손실, 페이지 로딩 20초 이상으로 매우 느린 응답 속도를 보임
- 원인은 바이트 단위 입출력의 큰 오버헤드 때문이었음
- 3KiB RAM을 적극 활용해 링버퍼 추가, SLIP 함수에 일괄 데이터 공급 구조로 개선
- 쓰기 또한 배치로 분할해 전송 처리, 빠른 클린업을 구현
- 최적화 결과 ping 20ms, 무손실, 페이지 로딩 160ms 달성
- 전체 RAM과 플래시 사용량:
- 플래시: 24KB 중 5,116B(20.82%)
- RAM: 3KB 중 1,380B(44.92%)
- 전체 블로그 콘텐츠도 무리없이 서비스 가능한 용량이며, 서버사이드 C 코드 구동도 가능함
기타 기능 및 마무리
- API 엔드포인트를 직접 구현, 메인 페이지 요청 횟수 및 마이크로컨트롤러 유니크 ID 리턴
- 극한의 저사양 하드웨어와 최소한의 메모리로 동적 웹서버와 API까지 구현한 실험임
참조
전자담배 피는데 어디 두고 왔거나 여행지라거나 하면...
기기 하나 더 사거나 연초 피긴 좀 그렇고 니코틴은 충전해야겠고 싶을 때 편의점에서 찾게 되더라고여
Hacker News 의견
-
저렴하면서도 강력한 하드웨어를 찾는다면 중국의 UZ801 4G LTE (Qualcomm MSM8916) 동글도 살펴볼 만함. 이 장치는 약 $4~5밖에 안 하지만 4GB eMMC, 512MB RAM, 실제 4G 모뎀(가끔 2유심 스위칭 지원) 등 인상적인 하드웨어를 제공함. 사실상 구형 안드로이드 SOC라 GPU와 GPS도 포함되어 있음. 이미 동글 지원을 위한 작업도 상당 부분 진행되어 있음
Zhihe 시리즈 LTE 동글 정보
OpenStick 프로젝트
이처럼 특이한 홈랩 프로젝트에 활용할 하드웨어 플랫폼을 찾는다면 적합함-
입문자에게는 이 가이드가 가장 좋아 보임. 리눅스를 설치하려면 펌웨어 파티션을 백업해두고 다시 플래시해야 4G 모뎀이 작동함. 단돈 5달러에 이렇게 많은 하드웨어를 살 수 있다는 건 정말 말이 안 될 정도임. 여기에 파워뱅크(혹은 버려진 전자담배 배터리로 직접 제작)를 추가하면 어디서나 사용할 수 있는 WiFi와 4G 지원 리눅스 머신이 완성됨
-
이런 SOC나 유사한 제품 링크가 필요하다면 Hackaday에 전용 기사와 다양한 링크가 소개되어 있음
Hackaday 기사
AliExpress MSM8916 예시
실제로 내장 스크린이 달렸다는 MSM8916 동글도 발견했음(단 RAM 정보는 없음) -
Qualcomm MSM8916 이야기를 들으니 반가움. 이건 예전 내 친구였던 Snapdragon 410임. 2015년식 Moto G3에도 이 프로세서가 들어 있었음(지금도 가끔 whatsapp 용으로 사용함). 안드로이드 베이스(버전 7)는 무거운 작업만 아니면 (예상과 달리) 상당히 효율적으로 작동함. 이런 구형 모바일 칩셋이 아직도 생명력 있게 지원된다는 점이 인상적임.
참고로, 이 칩이 안드로이드 최초로 64비트 지원한 프로세서 중 하나였지만, 모토롤라가 출시 전에 포팅을 못 해서 32비트 안드로이드만 지원했다는 점도 재밌는 사실임 -
Freedom Pop에서 나눠줬던 리눅스로 동작하는 LTE 동글이 생각남. 분해하면 UART 접근도 가능했음
-
내 최대 문제는
a.) 전자 제품 세계가 너무 빠르게 진화하고 있음
b.) 내 실력과 시간 부족으로 이런걸로 쿨한 걸 만들 역량이 부족함
예전에 licheerv nano(예: luckfox pico, Milk-v duo와 유사)를 사서 usb-c 오디오 잭이 달린 오픈소스 iPod nano를 만들려고 했음.
2.4인치, 혹은 3인치 미만 터치스크린 중 licheerv nano의 MPI 포트에 호환되는 걸 찾지 못했음.
LVGL로 작고 휴대 가능한 오디오플레이어를 만들 수도 있었겠지만, 내겐 어려웠음
-
-
이런 종류의 기기를 재사용하는 건 정말 멋진 일임. 언젠가 도시 전체가 이런 기기를 조합해서 운영된다면, 포스트 아포칼립스 영화에서 나올 법한 설정이 상상됨.
한편, 요즘 일회용 전자담배 안에는 마이크로컨트롤러 뿐 아니라 최신 보도에 따르면 게임과 화면까지 탑재되어 있다는 점에서 이는 엄청난 전자 폐기물임. 여러 겹의 어리석음이 복합적으로 드러남-
또 다른 사례로는 일회용 코로나 테스트기가 있음. 마이크로컨트롤러와 광학센서를 탑재하고 블루투스로 휴대폰에 결과를 보여줌. 이전 토론 여기에서도 다뤄졌음
-
일회용 전자담배 안의 완벽하게 재사용 가능한 리튬배터리에 대해 잘 알고 있었음. 이것만 해도 심각한 낭비임.
그런데 이번에는 마이크로컨트롤러와 USB-C 커넥터까지 포함됨! 해당 커넥터가 외부에서 접근 가능한지, 아니면 패키지를 분해해야만 접근 가능한지 궁금함.
정말 여러 겹의 어리석음임. 내부 하드웨어값이 실제 제품값의 절반 이상은 될 듯함 -
일회용 전자담배가 정말 심각한 전자 폐기물인지 궁금함. 휴대폰, 자동차, 노트북 등 우리가 버리는 수많은 물건에도 재사용 가능한 하드웨어가 많지만, 대체로 관리가 제대로 안 되는 점은 마찬가지임. 오히려 전자담배 하드웨어가 일정 수준 표준화된다면 Arduino처럼 학교 프로젝트에 활용할 수도 있을 것 같은 상상도 해봄
-
이런 이야기를 들으면 duskOS와 collapseOS가 떠오름
-
이런 제품 판매가 가능하다는 사실만으로도 규제가 부족하다는 증거임
-
-
옛날 컴퓨터와의 스펙 불일치가 흥미로움. 예를 들어 Commodore 64는 64KB RAM을 8비트, 1MHz CPU에 연결해 썼음. 하지만 지금은 그 RAM의 절반밖에 안 되는 일회용 기기조차 32비트 24MHz CPU에 연결됨. 1980년대에는 상상도 못할 일이 이런 식으로 2025년에 일회용으로 등장함. 묘하게 인상적임
-
실제로 RAM은 3KB, 플래시는 24KB임. 물론 플래시 속도는 구형 메모리와 비슷한 경우도 있지만, 레이턴시는 비교가 안 됨
-
3KB RAM밖에 없어서, 옛날 VIC-20보다도 적음
-
CPU가 1980년대 기준으로 그리 환상적이지는 않음. 87년에 Acorn Archimedes가 8MHz ARM 프로세서를 탑재했는데, 비싸긴 했지만 최소 512KB RAM과 함께 사용했음
(참고로 1987년이 벌써 38년 전이라는 사실에 깜짝 놀라고 있음)
-
-
이런 기기가 얼마나 유용한지 보여줘서 기쁨. 이런 제품을 "일회용"으로 취급하는 건 일종의 광기임. 길가에 버려진 전자담배에서 LiPo 배터리를 회수해서 썼는데, 이 배터리들은 충전 회로까지 내장된 재충전 가능 배터리임(단순한 수준이 아님). 이런 걸 단 한 번만 쓰고 버리도록 만드는 결정은 정말 잘못된 현상임.
이것은 사실상 '수리 불가성'의 극치임. 재사용·재충전을 막기 위해 설계했다는 점에서 에코프렌들리와 메이커 정신 모두에 반하는 모습임-
재사용 가능한 전자담배도 있고, 신뢰할 수 있는 상점들은 이런 제품만 취급함. 하지만 이 제품들은 일회용 전자담배에 비해 가격이 훨씬 비쌈. 그래서 일회용 제품이 밀수업자나 미성년자(저가와 압수 위험 때문)에게 인기가 많음.
결과적으로 젊은이들이 범죄조직과 접촉하게 만들고, 돈이 없어도 이들에게 빚을 지게 됨. 결국 마약 빚을 지는 것과 똑같은 파장임. 이를 메우기 위해 다른 범죄에까지 악용될 위험이 있음 -
한 사람이 음악 페스티벌에서 수거한 일회용 전자담배로 전기 자전거 배터리를 만드는 대단한 영상을 본 적 있음
관련 영상
일회용 전자담배가 합법인 이유를 이해할 수 없음. 386 세대 이후 세대가 진짜로 자원 낭비에 신경쓸 줄 알았는데 실망스러움
-
-
USB C와 충전식 배터리가 들어 있는데 어떻게 "일회용"으로 분류되는지 해명해야 하는 변호사가 언젠가 등장할 게 분명함
사실 이 형태로 만든 이유는, 기술적으로 재사용 가능하니 일회용 전자담배가 금지된 지역에서도 판매할 수 있기 때문임.
일부러 계속 재구매하고 버리는 일부 사용자 특성을 노린 판매 방식임-
완전 재사용 가능한 전자담배가 있는데 왜 굳이 일회용을 사는지 이해가 안 됨. 솔직히 흡연 습관을 끊는 목적으로만 유의하다고 생각함
-
비닐봉투 규제로 인해 더 두꺼운 비닐을 10센트에 파는 것과 똑같음. 어차피 "재사용 가능"이라는 명목임
-
일부 제품은 교체 가능한 팟/탱크를 제공하지만, 대부분은 사용자가 손볼 수 있는 부품이 아예 없음. 액상이 어느 정도 줄면 코일이 타 들어가기 시작하고 전체를 버리는 구조임. 어느 한 매장은 중고품을 회수해 적절히 분해해 처리한다고는 하지만, 대다수 이용자들은 그냥 일반 쓰레기로 버리는 듯함
-
USB C가 들어간 이유는 배터리가 제품에 들어간 액상 대비 충분한 용량을 제공하지 못해서임. 결국 2~3회 완충 가능하고 액상이 소진됨
-
-
일회용 전자담배는 사회가 어떻게 이걸 정상화했는지 이해할 수 없는 현상임
-
사회는 종종 광고 예산이 있는 것들을 정상으로 받아들이는 경향이 있음
-
사람 폐에 극심한 손상을 아주 빠른 시간 내에 줄 수 있다는 사실을 빼놓을 수 없음
-
-
종말 시나리오 준비품: 총알, 통조림, 식수? 아님.
파라데이 케이지 안에 넣은 geek bar 1,200개임 -
해킹 만세임! 바로 이런 내용을 위해 Hacker News가 존재한다고 생각함. 대단한 기사와 재미있는 프로젝트였음
-
요즘 기술 현황은 정말 기묘함. AI가 우리 일을 대신하는 게 아니라 그림을 그려주고, 이제는 eCigarette에서 웹사이트를 호스팅함. 이 상황을 설명하는 단어는 "기묘함" 밖에 떠오르지 않음
-
저자가 진정한 의미의 "vaporware"를 돌릴 궁극의 컴퓨팅 플랫폼을 찾았다고 할 수 있을 듯함