The P7 project is made of communication utilities that are meant to be used with CASIO fx calculators (Graph). These utilities allow one to interact with the calculator's filesystems (file sending, receiving, listing, copying, removing, ...), display the calculator's screen in real time, and backup/replace the system components used by the machine.
This project also represents, featuring others, the liberation of the sector : until now, the software produced by CASIO to interact with its calculators is only available on Microsoft Windows. The P7 project wasn't the first project with the objectives of free-ing and making it available to users on other platforms in mind, but it has been the first one to go this far and to use a free software license (LGPL3).
This project is composed of a library, with a simple interface and a more advanced one, libp7 (currently in 3.0), and of a set of command-line utilities, p7utils (currently in 3.0). There is currently no software with a graphical interface.
I've had some problems recently with the server on which the P7 Debian repository was, so an other one should be setup in quite some time (probably in april 2017, since I don't have much time). While there is no Debian repository, you can build and install the packages yourself with the following commands:
sudo apt install devscripts debhelper libusb-1.0-0-dev libsdl1.2-dev asciidoc cd /tmp && git clone https://github.com/cakeisalie5/p7-packaging cd p7-packaging make -C libp7 && sudo make -C libp7 install make -C p7utils && sudo make -C p7utils install
Sorry for the inconvenience!
Breizh_craft took care of making accessible the library and the utilities on the AUR, available through the
yaourt command (not installed out-of-the-box on Arch). To install the two utilities, simply do :
yaourt -S p7 p7screen
If no packages have been made for your distribution and you have made one, contact me, I'll add it here!
Before building everything, you need these (prerequisites):
To download, build and install the library:
cd /tmp curl -o libp7-3.0.tar.gz https://p7.planet-casio.com/pub/libp7-3.0.tar.gz tar xzf libp7-3.0.tar.gz && cd libp7-3.0 ./configure --udev && make && sudo make install
To download, build and install the utilities:
cd /tmp curl -o p7utils-3.0.tar.gz https://p7.planet-casio.com/pub/p7utils-3.0.tar.gz tar xzf p7utils-3.0.tar.gz && cd p7utils-3.0 ./configure && make && sudo make install
In order to not use
sudo p7 each time, it is recommended to add your user account to the
sudo usermod -a -G uucp <your username>
For now, with
p7, it is possible to:
To send a file:
# Send an addin, interactive confirmation in case of overwrite p7 send addin.g1a # Same thing with a nice loading bar p7 send -# addin.g1a # Send an addin under another name and in a folder, # interactive confirmation in case of overwrite p7 send -o other.g1a -d folder addin.g1a # Send an addin, force overwrite p7 send -f addin.g1a
To request a file:
# Simple request p7 get addin.g1a # Request from a distant folder p7 get -d folder addin.g1a # Request a file and display it into standard output p7 get -o - doc.txt
To copy a distant file into another distant one:
# Copy a text file from a folder into another one in the root p7 copy -d hidden file.txt VISIBLE.txt # Copy an addin into a folder p7 copy addin.g1a -t disabled addin.g1a
To delete a distant file:
# Delete a file at root p7 del addin.g1a # Delete a file in a folder p7 del -d dossier info.txt
To list distant files:
To optimize memory:
To dump info about the calculator:
Notice that you can use another filesystem than the default one (
fls0). For example, for calculators equiped with an SD card reader, it is possible to access files on it using the
crd0 filesystem with the
--device crd0 option.
To display distant screen with
p7screen, you must:
p7screenin your shell
And that's it, if everything went well, a window appeared with your calculator's screen! Notice that it won't work if you go in the CAPT menu and select Projector, you have to select Projector when you're plugging in your calculator.
The P7 project, and previous projects, have involved a lot of reverse engineering, formalization and testing before being where it is now. Thanks to:
And here are the previous projects to the P7 one:
I've written some additional notes for people that would like to understand the protocol and its implementation better.