# FriiDump Candidate16 Linux Xbox Tray-Cycle Correction

## Trigger

The first Candidate15 Linux Xbox smoke selected the intended USB GDR-8050L
identity and passed the `CAP_SYS_RAWIO` preflight, but the inserted media was a
normal video DVD. The challenge handshake therefore could not establish an Xbox
game view. Stage 2 then failed immediately on the required software eject, and
the tray remained locked after FriiDump exited.

## Root cause

Linux optical devices may use the generic CD-ROM layer's `CDO_LOCK` behavior
while a device file is open. Candidate15 sent raw START STOP UNIT eject/load
commands without first releasing that door lock. The initial eject therefore
failed before the media cycle could begin.

## Correction

Candidate16 uses the documented `CDROM_LOCKDOOR` ioctl on Linux:

1. release the optical door lock before software eject;
2. send START STOP UNIT eject;
3. wait three seconds;
4. send START STOP UNIT load;
5. poll readiness and settle;
6. restore the door lock only after a successful load.

On eject, load, or readiness failure, FriiDump leaves the door unlocked and
prints an always-visible recovery diagnostic.

## Acceptance boundary

Candidate16 requires clean Linux and Windows builds, explicit
`cap_sys_rawio=ep` installation on the exact Linux executable, and a physical
GDR-8163B/GDR-8050L Linux Xbox smoke using an Original Xbox retail disc. The
smoke must prove both required media cycles, metadata, unlocked game-data reads,
controlled cancellation, native reporting, and STOP UNIT.
