Environment: ILCE-7M5 (CFCA6014E092) · USB · Camera Remote SDK V2.02.00 · darwin-arm64 (macOS 15) · server 3.0.0 · remote-transfer
Summary
0x8D03 (CrError_RemoteTransfer_GetContentsDataDisable) is a transient, retryable "a transfer is already in progress" condition, not a failure of the requested transfer. The server surfaces it as:
HTTP 400 {"message":"Failed to start file download: 0x00008D03","success":false}
That wording says the download failed and implies a permanent fault. Both are wrong: the request was simply issued while another transfer was in flight, and the identical request succeeds moments later.
Deterministic reproduction
Connect in remote-transfer, then:
| Step |
Request |
Result |
| 1 |
POST .../131082/2/download (67.8 MB) |
202 |
| 2 |
POST .../131305/1/download — 0.3 s later, while step 1 is in flight |
400 0x8D03 |
| 3 |
wait for step 1 to complete (~20 s) |
— |
| 4 |
repeat step 2 verbatim |
202, completes normally |
Recovery is immediate — a retry 2 s after the in-flight transfer finished already succeeded in my run. No reconnect, no restart, no replug.
Why this matters beyond the wording
This misreporting produced the wrong causal model in #40. There, one transfer hung permanently (a Linux-only defect), so every later transfer correctly reported "busy" — for the rest of the session. Read through this message, that looked like "one failed download latches the whole RemoteTransfer subsystem into 0x8D03", and the investigation went hunting for a latching mechanism that does not exist. See #40 for the correction.
A retryable-busy state reported as a hard failure is the kind of thing that costs a day of debugging exactly once per person who hits it.
Expected
409 Conflict (or 503 with Retry-After) rather than 400.
- A message that names the actual state and the remedy, e.g. "A transfer is already in progress on this camera. Retry when it completes — watch for
transferProgress."
- Ideally include the in-flight transfer's identity (content/file id) so a client can wait on the right event.
Related: the underlying lack of queueing is filed separately.
Environment: ILCE-7M5 (
CFCA6014E092) · USB · Camera Remote SDK V2.02.00 · darwin-arm64 (macOS 15) · server 3.0.0 ·remote-transferSummary
0x8D03(CrError_RemoteTransfer_GetContentsDataDisable) is a transient, retryable "a transfer is already in progress" condition, not a failure of the requested transfer. The server surfaces it as:That wording says the download failed and implies a permanent fault. Both are wrong: the request was simply issued while another transfer was in flight, and the identical request succeeds moments later.
Deterministic reproduction
Connect in
remote-transfer, then:POST .../131082/2/download(67.8 MB)202POST .../131305/1/download— 0.3 s later, while step 1 is in flight4000x8D03202, completes normallyRecovery is immediate — a retry 2 s after the in-flight transfer finished already succeeded in my run. No reconnect, no restart, no replug.
Why this matters beyond the wording
This misreporting produced the wrong causal model in #40. There, one transfer hung permanently (a Linux-only defect), so every later transfer correctly reported "busy" — for the rest of the session. Read through this message, that looked like "one failed download latches the whole RemoteTransfer subsystem into
0x8D03", and the investigation went hunting for a latching mechanism that does not exist. See #40 for the correction.A retryable-busy state reported as a hard failure is the kind of thing that costs a day of debugging exactly once per person who hits it.
Expected
409 Conflict(or503withRetry-After) rather than400.transferProgress."Related: the underlying lack of queueing is filed separately.