카테고리 없음

에이수스가 자전거에 사이드카를 붙였다 — Oxiis Bike Booster를 인프라 엔지니어 눈으로 뜯어보기

TeEm0 2026. 8. 18. 09:00
728x90

HN 프론트에 에이수스 자전거 부스터가 올라온 걸 보고 좀 웃었다. 메인보드랑 라우터 만들던 회사가 왜 자전거를... 싶다가, 스펙 페이지를 읽어보니 이건 딱 우리가 매일 하는 짓이었다. 레거시 시스템을 갈아엎지 않고 사이드카를 붙여서 기능을 추가하는 것.

기존 자전거를 e-bike로 바꾸는 방법은 크게 둘이다. (1) 자전거를 새로 산다 = 리라이트. (2) 허브모터 킷을 달려고 휠을 통째로 재조립하고 컨트롤러 배선을 프레임에 케이블타이로 감는다 = 인플레이스 마이그레이션. 둘 다 다운타임이 길고 롤백이 어렵다. Oxiis는 세 번째 길을 판다. 시트포스트에 클램프로 물려서 롤러가 뒷타이어를 눌러 돌리는 프릭션 드라이브(friction drive) 방식이고, 공식 문구로는 "기어나 브레이크에 대한 변경 없음(Zero modifications to gears or brakes)"이다. 붙였다 떼면 원래 자전거로 돌아간다. 무상태(stateless) 사이드카에 가깝다.

핵심: 마찰 롤러 + 158Wh 배터리라는 리소스 예산

동작 원리는 단순하다. 모터가 롤러를 돌리고, 롤러가 타이어 표면을 압착해서 마찰로 토크를 전달한다. 체인·스프라켓·BB를 건드리지 않으니 설치가 5분이고, 대신 동력 전달이 타이어 표면 상태에 100% 의존한다. 이게 뒤에서 얘기할 모든 트레이드오프의 뿌리다.

스펙에 나온 숫자만 가지고 리소스 예산을 뽑아보자. 배터리 158.4Wh / 36V, 정격 250W / 피크 500W, 주행거리 에코 50km ~ 스포츠 10km.

$ python3 - <<'EOF'
WH, V, RATED, PEAK = 158.4, 36, 250, 500
print(f"배터리 용량   : {WH/V:.2f} Ah @ {V}V")
print(f"정격 연속 출력: {WH/RATED*60:.1f} 분")
print(f"피크 출력     : {WH/PEAK*60:.1f} 분")
for mode, km in (("eco", 50), ("sport", 10)):
    print(f"{mode:5s} {km:2d}km -> {WH/km:5.2f} Wh/km")
EOF
배터리 용량   : 4.40 Ah @ 36V
정격 연속 출력: 38.0 분
피크 출력     : 19.0 분
eco   50km ->  3.17 Wh/km
sport 10km -> 15.84 Wh/km

여기서 읽어야 할 건 두 가지다. 첫째, 모드에 따라 소모 전력이 5배 차이난다. 오토스케일링 정책에서 min/max 인스턴스 차이가 5배인 것과 같다. "50km 간다"는 마케팅 숫자는 평지·순풍·에코 기준이고, 언덕 낀 출퇴근에서 스포츠 모드를 남발하면 예산은 순식간에 녹는다. 둘째, 정격 250W를 계속 물리면 38분이다. 즉 이건 모터가 주 동력이 아니라 사람 다리가 주 동력이고 모터는 버스트 크레딧이라는 뜻이다. t 시리즈 인스턴스의 CPU 크레딧을 생각하면 정확하다. 크레딧 다 쓰면? 3.7kg짜리 데드웨이트를 싣고 페달을 밟는다.

충전 쪽은 USB-C PD 100W — 케이블을 확인해라

158Wh를 2시간에 채우려면 평균 79W 이상이 실제로 들어가야 한다. 그래서 "100W PD 충전기 필요"라고 못을 박아둔 것으로 보인다. 여기서 노트북 쓰는 사람들이 익히 아는 함정이 그대로 재현된다. 100W(20V/5A)는 e-marker 칩이 들어간 5A 케이블이 있어야 협상이 된다. 서랍에 굴러다니는 60W(3A) 케이블을 꽂으면 협상 결과가 20V/3A로 떨어지고, 충전 시간은 2시간이 아니라 그 이상이 된다.

리눅스 노트북이 있다면 PD 협상 결과를 직접 볼 수 있다. 자전거 부스터가 아니라 충전기·케이블 조합을 검증하는 용도다.

$ ls /sys/class/typec/
port0  port0-partner
$ cat /sys/class/typec/port0-partner/usb_power_delivery/source-capabilities/*/*
# 예시 출력 (충전기가 광고하는 PDO 목록)
5000mV  3000mA
9000mV  3000mA
15000mV 3000mA
20000mV 5000mA   <-- 100W 지원
$ cat /sys/class/power_supply/ucsi-source-psy-USBC000:001/voltage_now
20000000

여기서 20V/5A PDO가 안 보이면 충전기 또는 케이블 둘 중 하나가 병목이다. 커널·펌웨어에 따라 경로 이름은 다르니 grep -r . /sys/class/typec/ 2>/dev/null로 훑는 게 빠르다.

실무 관점: 도입 전 호환성 체크와 흔한 함정

1) 사전 조건 검증부터 (= 인프라 프리플라이트 체크)

공식 페이지가 명시한 제약이다. 하나라도 어긋나면 그냥 설치가 안 되거나, 되더라도 위험하다.

  • 타이어 폭 60mm 이하, 휠 사이즈 16~29인치 및 700C
  • 시트포스트 지름 25.4~34.9mm (스페이서 동봉)
  • 카본 시트포스트 불가 — 안전상 금지라고 명시돼 있다
  • 풀서스펜션 MTB 불가 (하드테일은 가능)
  • 슬릭/세미슬릭/텍스처 타이어 OK, 노비(knobby) 타이어 비권장
  • 방수 IPX4 — 생활방수, 소나기·침수 불가

여러 대를 굴리는 상황(가족, 소규모 배달 팀 등)이라면 스펙시트를 만들어두고 기계적으로 걸러라. 인벤토리를 CSV로 관리하는 것과 다를 게 없다.

$ cat bikes.csv
name,seatpost_mm,tire_mm,post_material,suspension
commuter,27.2,32,alloy,none
gravel,31.6,45,alloy,none
roadbike,27.2,28,carbon,none
mtb,30.9,58,alloy,full
$ awk -F, 'NR>1 {
  ok = ($2>=25.4 && $2<=34.9) && ($3<=60) && ($4!="carbon") && ($5!="full")
  printf "%-10s %s\n", $1, (ok ? "PASS" : "FAIL")
}' bikes.csv
commuter   PASS
gravel     PASS
roadbike   FAIL
mtb        FAIL

실측 팁 하나. 시트포스트 지름은 프레임 스티커나 제조사 스펙 믿지 말고 버니어 캘리퍼스로 직접 재라. 27.2mm인 줄 알았는데 31.6mm였다는 얘기가 흔하다. 클램프 체결력이 잘못 잡히면 주행 중 부스터가 돌아간다.

2) 앱 연동 — BLE는 원래 안 붙는다

모드 전환은 본체 버튼 또는 전용 앱(Android/iOS)으로 한다. 스마트 액세서리 붙여본 사람은 알겠지만, BLE 페어링은 첫 시도에 되는 게 오히려 예외다. 리눅스에서 BLE 기기를 훑어볼 때 자주 만나는 화면은 대략 이렇다.

$ bluetoothctl
[bluetooth]# scan on
Discovery started
[NEW] Device XX:XX:XX:XX:XX:XX Oxiis-XXXX
[bluetooth]# connect XX:XX:XX:XX:XX:XX
Attempting to connect to XX:XX:XX:XX:XX:XX
Failed to connect: org.bluez.Error.Failed br-connection-profile-unavailable

br-connection-profile-unavailable은 "BLE 전용 기기인데 클래식 BR/EDR 프로파일로 붙으려 했다"는 뜻이 대부분이다. connect 대신 주소 타입을 명시하거나(bluetoothctl --agent + LE 스캔), bluetoothctl remove로 캐시된 페어링 정보를 지우고 다시 붙이면 풀리는 경우가 많다. 폰 쪽에서도 마찬가지다. 안 붙으면 앱 재설치보다 페어링 정보 삭제가 먼저다. 참고로 Oxiis의 BLE 서비스 UUID나 프로토콜은 공개된 게 없어서, 서드파티 연동은 기대하지 않는 게 좋다(공식 문서 확인 필요).

3) 진짜 트레이드오프

  • 비 오는 날. 프릭션 드라이브의 아킬레스건이다. 타이어 표면이 젖으면 마찰계수가 떨어져 롤러가 헛돈다. 공식 문구에도 "동적 압력으로 자동 그립"이라고는 하지만, 물리 법칙을 이기지는 못한다. 게다가 IPX4는 생활방수 수준이다. 장마철 출퇴근 주력으로 쓸 물건은 아니라고 본다.
  • 타이어 마모. 구동력을 타이어 트레드로 받는다. 마모 속도가 빨라지는 건 구조상 피할 수 없다. 소모품 교체 주기를 예산에 넣어라.
  • 무게 3.7kg. 배터리 포함이고, 시트포스트 = 자전거에서 가장 높은 위치에 붙는다. 무게중심이 위로 올라가면 핸들링이 달라진다. 특히 저속 코너와 정지 상태 밸런스.
  • 항공 반입. 158Wh는 100Wh를 넘는다. 일반적으로 100~160Wh 구간은 항공사 사전 승인이 필요하고 위탁수하물은 불가, 기내 반입만 가능하다. 공식 페이지도 "airline approval 필요"라고 적어놨다. 출장 갈 때 그냥 캐리어에 넣으면 게이트에서 잡힌다.
  • 법규. 최고속도 32km/h인데 "특정 지역에서는 25km/h로 제한"이라고 돼 있다. 한국은 페달 보조(PAS) 25km/h 기준이 있고, 부착형 개조 장치가 국내 전기자전거 정의와 안전 인증 요건을 충족하는지는 별도로 확인이 필요하다. 에이수스도 "지역 교통법규 준수 책임은 사용자에게 있고, 출력·속도 제한을 임의 개조하면 보증 무효"라고 못을 박아놨다. 이 문장, 우리 업계로 치면 "SLA 예외 조항"이다.

4) 대안 비교

고르는 기준은 결국 "얼마나 바꾸고, 얼마나 되돌릴 수 있느냐"다.

  • 완성형 e-bike — 통합도·안정성 최고, 대신 비싸고 기존 자산은 버린다. 그린필드 신규 구축.
  • 허브모터 컨버전 킷 — 효율 좋고 비 와도 동작하지만 휠 재조립·배선·컨트롤러 마운트가 필요하고 되돌리기 어렵다. 인플레이스 마이그레이션.
  • Oxiis 같은 프릭션 부스터 — 설치 5분, 롤백 5분, 여러 자전거에 돌려쓰기 가능. 대신 우천 취약, 타이어 마모, 배터리 예산 빡빡. 사이드카.

정리

한 줄 요약: 자전거를 갈아엎지 않고 붙였다 뗄 수 있는 250W 사이드카. 대신 날씨와 타이어라는 외부 의존성이 생긴다.

쓰면 좋을 사람은 명확하다. 평지~완만한 언덕의 10~20km 도심 출퇴근, 아끼는 자전거의 지오메트리는 그대로 두고 싶고, 주말엔 떼고 순수 자전거로 타고 싶은 사람. 여러 대 굴리는데 한 대만 전동화하기 애매한 사람.

반대로 비 오는 날에도 무조건 굴러야 하거나, 왕복 40km 이상이거나, 노비 타이어 MTB·카본 시트포스트·풀서스펜션이면 후보에서 빼라. 스펙시트가 이미 "이건 지원 안 합니다"라고 다 적어놨다. 인프라나 하드웨어나, 제약 조건을 먼저 읽고 프리플라이트 체크를 돌리는 쪽이 항상 덜 고생한다.

가격·출시 지역·국내 정식 유통 여부는 이 글을 쓰는 시점에 확인이 안 됐다. 구매 전 반드시 공식 페이지와 국내 판매처 안내를 확인하길 권한다.

참고 자료

728x90