Cette page est également accessible en Français !
For any question, help request or anything, send me a mail.

Introduction

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 icon libp7 (currently in 3.0), and of a set of command-line utilities, p7utils icon p7utils (currently in 3.0). There is currently no software with a graphical interface.

Building and installing

debian icon Debian, ubuntu icon Ubuntu, linux mint icon Linux Mint and derivated

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!

arch linux icon Arch Linux, manjaro icon Manjaro

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
p7 package info - p7screen package info - libp7 package info

linux icon Other GNU/Linux distributions

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):

Name Version
make >= 4.0
curl any
gcc >= 4.9
binutils any
asciidoc any
gzip >= 1.6
libusb >= 1.0
libsdl == 1.2.15
pkg-config >= 0.27

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 uucp group:

sudo usermod -a -G uucp <your username>

Usage

icône p7 P7

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:

p7 ls

To optimize memory:

p7 optimize

To dump info about the calculator:

p7 info

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.

icône p7screen P7SCREEN

To display distant screen with p7screen, you must:

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.

Miscallenous

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.

This page was made using pandoc. This website's source is available here.