fix(unitree): tell users how to fetch the Go2/G1 AES key when the handshake needs it - #4067
fix(unitree): tell users how to fetch the Go2/G1 AES key when the handshake needs it#4067spomichter wants to merge 1 commit into
Conversation
…dshake needs it unitree-webrtc-connect raises AesKeyRequiredError pointing at an examples/fetch_aes_key.py that ships with that package's repo, not with dimos. Translate it into the dimos workflow: the unitree-fetch-aes-key console script the extra installs, and the --unitree-aes-128-key flag.
|
| Go2 firmware 1.1.15 and later (G1 1.5.1 and later) encrypts the LAN handshake with a per-device key. Fetch it once from the Unitree account the robot is bound to and pass it on the command line: | ||
|
|
||
| ```bash | ||
| unitree-fetch-aes-key --email <unitree account email> --sn <robot serial> |
There was a problem hiding this comment.
This Go2 setup command omits --device-type Go2. The key-fetch utility defaults to the G1 device family, so this command sends the device-list request with AppName: G1 rather than AppName: Go2. If Unitree scopes bound devices by that header, the documented workflow queries the G1 family and cannot retrieve the Go2 AES key required by the next command. Add --device-type Go2 to this command, or provide separate Go2 and G1 commands. This must be corrected before merging.
Artifacts
- Shows the exact authored command script that invokes the installed CLI handler and captures its cloud-request construction, ending with the runnable proof implementation.
- Captured execution of the documented argument shape shows CLI status 0 and a controlled HTTP 200 OK request with `AppName: G1`, proving omission selects G1.
- Captured execution with `--device-type Go2` shows CLI status 0 and a controlled HTTP 200 OK request with `AppName: Go2`, proving the required namespace selection.
❌ 2 Tests Failed:
View the top 2 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
Problem
On Go2 firmware >= 1.1.15 (G1 >= 1.5.1)
dimos run unitree-go2fails deep insideunitree-webrtc-connectwith:That example script lives in the upstream package repo, not in dimos, and the message names the driver class rather than the dimos flag. Users have no path from the error to a working command.
Fix
UnitreeWebRTCConnection.connecttranslatesAesKeyRequiredErrorinto aRuntimeError(chained, original kept as__cause__) that gives the dimos workflow:unitree-fetch-aes-keyis the console scriptunitree-webrtc-connect2.1.2 installs alongside the driver. Quickstart gets the same two commands under Real robot.Test covers the translation and the chained cause. The two pre-existing mypy errors in
test_connection.py(kwargs splat at thevelocity_apicall) are untouched.