Protocol 7.00 use cases¶
This document inventories use cases of Protocol 7.00 that are exploited by the library and command-line utilities.
Send a file to storage¶
In order to send a file to storage, the flow is the following:
sequenceDiagram
Participant user as User
Participant active as Active Side
Participant passive as Passive Side
active->>passive: Command '45'
alt Overwrite confirmation is required
passive->>active: Overwrite confirmation requested
active->>user: Request user confirmation
user->>active: Confirm or reject
alt User confirms overwrite
active->>passive: Confirm overwrite
else
active->>passive: Reject overwrite
end
end
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
Note over active,passive: Data transfer flow from<br />active side to passive
end
For more information, consult the following sections:
This flow is used by p7 send; see the send subcommand reference
for more information.
Request a file from storage¶
In order to request a file to storage, the flow is the following:
sequenceDiagram
Participant active as Original Active Side
Participant passive as Original Passive Side
active->>passive: Command '44'
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
active->>passive: Roleswap
passive->>active: Command '45'
active->>passive: Acknowledge
Note over active,passive: Data transfer flow from<br />original passive side to active
passive->>active: Roleswap
end
For more information, consult the following sections:
Command 44 “Request file” (storage);
Command 45 “Transfer file” (storage);
This flow is used by p7 get; see the get subcommand reference
for more information.
Copy a file to another on storage¶
In order to copy a file on storage, the flow is the following:
sequenceDiagram
Participant active as Active Side
Participant passive as Passive Side
active->>passive: Command '48'
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
end
For more information, consult the following sections:
Command 48 “Copy file” (storage).
This flow is used by p7 copy; see the copy subcommand reference
for more information.
Delete a file from storage¶
In order to delete a file on storage, the flow is the following:
sequenceDiagram
Participant active as Active Side
Participant passive as Passive Side
active->>passive: Command '46'
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
end
For more information, consult the following sections:
Command 46 “Delete file” (storage).
This flow is used by p7 delete; see the delete subcommand reference
for more information.
List files on storage¶
In order to list files on storage, the flow is the following:
sequenceDiagram
Participant active as Original Active Side
Participant passive as Original Passive Side
active->>passive: Command '4D'
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
active->>passive: Roleswap
loop All file information has not been sent
passive->>active: Command '4E'
active->>passive: Acknowledge
end
passive->>active: Roleswap
end
For more information, consult the following sections:
This flow is used by p7 list; see the list subcommand reference
for more information.
Reset a storage device¶
In order to reset a storage device, the flow is the following:
sequenceDiagram
Participant active as Active Side
Participant passive as Passive Side
active->>passive: Command '4A'
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
end
For more information, consult the following sections:
Command 4A “Reset” (storage).
This flow is used by p7 reset; see the reset subcommand reference
for more information.
Optimize a storage device¶
In order to optimize a storage device, the flow is the following:
sequenceDiagram
Participant active as Active Side
Participant passive as Passive Side
active->>passive: Command '51'
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
end
For more information, consult the following sections:
Command 51 “Optimize filesystem” (storage).
This flow is used by p7 optimize; see the optimize subcommand reference
for more information.
Back up the system¶
In order to back up the flash, the flow is the following:
sequenceDiagram
Participant active as Original Active Side<br />(PC, ...)
Participant passive as Original Passive Side<br />(calculator)
active->>passive: Command '4F'
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
active->>passive: Roleswap
passive->>active: Command '50'
active->>passive: Acknowledge
Note over active,passive: Data flow from calculator to PC
passive->>active: Roleswap
end
This flow is only available in older models, and has been removed since; see Devices for more information.
For more information, consult the following sections:
Command 4F “Request flash image”;
Command 50 “Transfer flash image”;
This flow is used by p7os get; see the get subcommand reference for more
information.
Upload and run an executable program¶
Warning
This is a dangerous flow, and is only documented here for completeness. Programs suitable for this command, nicknamed “Update.EXE”, are crafted in a very specific way, and you should not attempt to make your own.
In order to upload and run an executable program, the flow is the following:
sequenceDiagram
Participant active as Active Side
Participant passive as Passive Side
active->>passive: Command '56'
alt Error has occurred
passive->>active: Error
else
passive->>active: Acknowledge
Note over active,passive: Data transfer from active to passive
end
If successful, the last acknowledgement from the data transfer will have
the special subtype 03, which means that the communication is terminated
as control of the device is handed over to the program.
This use case is employed for updating the calculator, by uploading and running special programs whose role is to open a USB or serial link, and receive and flash the new OS at the command of the host. This has also been employed by the community to do the same, such as with fxRemote.
For more information, consult the following sections:
Command 56 “Upload and run”;
Flash the calculator using fxRemote¶
Warning
This is a very dangerous flow, and is only documented here for completeness. It also is specific to the fxRemote’s Update.EXE, and is unofficial.
In order to flash a new OS on an fx-9860G or compatible, the flow is the following:
sequenceDiagram
Participant active as Active Side
Participant passive as Passive Side
Note over active,passive: Passive side is the bootloader.
active->>passive: Command '56'
passive->>active: Ack
Note over active,passive: Data flow from active to passive (Update.EXE)
Note over active,passive: Passive side becomes fxRemote's Update.EXE.
active->>passive: Initialize connection
passive->>active: Acknowledge
active->>passive: Check hardware configuration (command '76')
passive->>active: Acknowledge
passive->>active: Identification data
loop From 0xA0010000 to 0xA0280000 excluded, by increments of 0x10000
active->>passive: Clear data (command '72')
passive->>active: Acknowledge
end
loop From 0xA0020000 to 0xA0280000 excluded, then 0xA0010000, by increments of 0x10000
loop Data left to send for sector
active->>passive: Send sector data in buffer (command '70')
passive->>active: Acknowledge
end
active->>passive: Request sector copy to flash (command '71')
passive->>active: Acknowledge
end
active->>passive: Request for termination (command '78')
passive->>active: Acknowledge
For serial links between the active side and fxRemote as the passive side, the link should use 115200 bauds, no parity, 2 stop bits, XON/XOFF software control and, if supported by the cable, DTR/RTS hardware control.
For more information, consult the following sections: