8774a4843e
PyInstaller onedir/onefile specs, Inno Setup script, and GitHub Actions workflow to produce JUC500-Setup-win64.exe and portable builds. Co-authored-by: Cursor <cursoragent@cursor.com>
3.0 KiB
3.0 KiB
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 미적용 가능 |
구성 인터페이스
- IF0 CDC Communication (
02:02:ff) EP0x81INT - IF1 CDC Data (
0a:00:00) EP0x02OUT /0x83IN BULK 512 - IF2 Mass Storage BOT — WORMHOLE 가상 CD
- IF3 HID (mouse proto) EP
0x87 - IF4 HID keyboard EP
0x86 - IF5 Vendor
ff:00:000x08OUT /0x89IN0x0AOUT /0x8BIN
Apple Silicon에서 IF0/IF1/IF5 는 libusb로 claim 가능. IF2–4는 커널 드라이버 점유(권한 없이 detach 불가).
번들 소프트웨어 (WORMHOLE 볼륨)
Wormhole.exe— PE32Wormhole.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 (<OTIMSG>, NP_Cmd_*, 파일/클립보드/KM)
데이터 경로: USB bulk 위 alive/data 파이프 분리 + XML 패킷 (isXMLPacket, Will send an XML packet).
Silicon 미동작 원인 (종합)
- 바이너리 아키텍처 — arm64 없음 (최신도 x86_64)
- 레거시 IOKit USB API — IOUSBDevice 경로
- 커널/유저 권한·드라이버 클레임 차이
- j5create M1 지원 목록에 JUC500 없음 (디스플레이/이더넷 어댑터 위주)
본 프로젝트 전략
공식 OTi/UPipe를 재구현하지 않고, IF5 bulk 브릿지 위에 자체 J5FX 프레임 프로토콜을 올려 Mac↔Win 양쪽에서 동일 스택으로 통신한다. Windows는 WinUSB(Zadig)로 IF5/IF1을 유저랜드에 노출해야 한다.