PlayStation Vita
Status: implemented; axis convention pending live-Vita validation.
The Vita has a full 6-axis IMU (3-axis accel + 3-axis gyro), a good tracker in the
3DS / Joy-Con 1 tier. Like the 3DS it can’t be host-driven, so a homebrew streams
IMU over UDP. Because the Vita’s motion API already returns calibrated floats,
the wire carries SI f32 values and skips all raw-count scaling.
Transport
Section titled “Transport”| Aspect | Value |
|---|---|
| Protocol | UDP, bridge binds 0.0.0.0:9306 |
| Identity | sender IP (one Vita = one tracker) |
| Rate | ~100 Hz |
A distinct port from the 3DS (9305) lets both run at once.
Packet layout (24 bytes, little-endian f32)
Section titled “Packet layout (24 bytes, little-endian f32)”| Offset | Field | Unit |
|---|---|---|
0x00 |
Accel X | g |
0x04 |
Accel Y | g |
0x08 |
Accel Z | g |
0x0C |
Gyro X | rad/s |
0x10 |
Gyro Y | rad/s |
0x14 |
Gyro Z | rad/s |
No header, sequence, or checksum - validate length == 24 and drop otherwise.
accel_m_s2 = accel_g × 9.80665; gyro is passed through in rad/s. The axis
convention is currently pass-through - confirm on hardware (gravity +Z
screen-up, gyro sign agreeing with accel-derived rotation) and lock the remap once
validated.
- The wire format is eimu-defined, so the companion must match it exactly.
- No magnetometer, battery, or rumble.
- Vita Wi-Fi is 2.4 GHz; UDP loss is tolerated.