# JUC500 분석 노트 분석일: 2026-07-15 환경: Apple Silicon (T6000 USB XHCI), 케이블 연결 상태 ## 하드웨어 식별 | 항목 | 값 | |------|-----| | VID:PID | `0711:7500` | | 제품명 | Smart Data Link | | bcdUSB | 2.10 | | Device Class | `EF:02:01` (Miscellaneous + IAD) | | 시리얼 예 | `D264CCA25B431D2E` | | 미디어 | `/dev/disk4` → `/Volumes/WORMHOLE` (FAT12, ~16.7MB, read-only) | | Media Name | SD Card Reader | | 링크 속도 | USB 2.0 High Speed (480 Mb/s) — 허브 경유 시 SuperSpeed 미적용 가능 | ## 구성 인터페이스 1. **IF0** CDC Communication (`02:02:ff`) EP `0x81` INT 2. **IF1** CDC Data (`0a:00:00`) EP `0x02` OUT / `0x83` IN BULK 512 3. **IF2** Mass Storage BOT — WORMHOLE 가상 CD 4. **IF3** HID (mouse proto) EP `0x87` 5. **IF4** HID keyboard EP `0x86` 6. **IF5** Vendor `ff:00:00` - `0x08` OUT / `0x89` IN - `0x0A` OUT / `0x8B` IN Apple Silicon에서 **IF0/IF1/IF5** 는 libusb로 claim 가능. IF2–4는 커널 드라이버 점유(권한 없이 detach 불가). ## 번들 소프트웨어 (WORMHOLE 볼륨) - `Wormhole.exe` — PE32 - `Wormhole.app` / shell: **i386 + ppc** (케이블에 들어 있는 2015 페이로드) - `Deployment/GSDD.zz` — 커스텀 압축(OT…) Windows 로더 페이로드 제조사 OEM: **KaiJet Technology / OTi**, 제품명 Wormhole / GO Bridge. ## 공식 다운로드 (2024-09, v1.0.1463.47) - Mac: `U3Wormhole.app` + `OTiTransfer.framework` → **x86_64 only** - 여전히 `IOUSBDevice` / `IOUSBDeviceStruct320` / `Query kIOUSBDeviceInterfaceID500` - Windows: `JUC500_1463.47 Update FW for Windows.exe` → **arm64 네이티브 미제공**. Rosetta로 떠도 USB user client 경로가 Silicon에서 불안정할 수 있음. ## 소프트웨어 아키텍처 (공식) ``` Wormhole UI └── GoBridgeDemon (daemon) ├── OTiTransfer.framework — USB open, alive pipe, data pipe, bounding ├── KMKeyMouse.dylib — HID KM 공유 └── KMClipboard.dylib — 클립보드 ``` 주요 API: `OTi_Open`, `OTi_SendData`, `OTi_ReadData`, `OTi_CheckBounding`, `OTi_SendHIDPacket` 알림: `OTi_NotifyDevicePlugin`, `OTi_NotifyRemoteAppActive`, … 상위 메시지: XML 기반 **UPipe** (``, `NP_Cmd_*`, 파일/클립보드/KM) 데이터 경로: USB bulk 위 alive/data 파이프 분리 + XML 패킷 (`isXMLPacket`, `Will send an XML packet`). ## Silicon 미동작 원인 (종합) 1. **바이너리 아키텍처** — arm64 없음 (최신도 x86_64) 2. **레거시 IOKit USB API** — IOUSBDevice 경로 3. **커널/유저 권한·드라이버 클레임** 차이 4. j5create M1 지원 목록에 **JUC500 없음** (디스플레이/이더넷 어댑터 위주) ## 본 프로젝트 전략 공식 OTi/UPipe를 재구현하지 않고, **IF5 bulk 브릿지** 위에 자체 `J5FX` 프레임 프로토콜을 올려 Mac↔Win 양쪽에서 동일 스택으로 통신한다. Windows는 WinUSB(Zadig)로 IF5/IF1을 유저랜드에 노출해야 한다.