This is rudimentary code to inject your own source into the AX206 based DPFs.
Since this chip is very much undocumented and no information about the internal
firmware is available, the following strategy was chosen:

- Leave original firmware as intact as possible (NEVER touch sector 0)
- Allow to manually put unit into "Developer Mode"
- Allow to return to default state using the RESET button

Note that the Developer Mode uses two sectors at the end of the internal
flash. Therefore, DO NOT fill up the frame with images to the maximum,
or weird things may happen.

When the DPF is hacked using the scripts described below, the Developer Mode
is simply entered by connecting the DPF to a PC via the USB cable and holding
the MENU button for approx. 2 seconds.

See more about the Developer Mode below.

----------------------------------------------------------------------------

The tar file contents are merely:

- simple (yet unfinished and quirky) library to access the DPF flash and
  the extended functionality when in "Developer Mode".
- Python wrapper around the above library
- Python scripts to patch various DPFs (listed in profiles.py) and other
  auxiliaries

Description of a few tools
---------------------------

app_detect.s, detect.py: Simple rudimentary detection for Sitronix/NXP
                         compatible LCD controllers and SPI flash chip.


Developer Mode
---------------

When the unit is in Developer Mode, it registers itself as USB device with
the same VID:PID, but not as USB storage. This allows much faster access using
libusb and as non-root. However, the unit will still use USB storage SCSI
commands, see dpflib for the wrapping over libusb.

Specific commands are implemented using the handler for the SCSI command
0xcd, mode 6. These commands are handled on the DPF by cmdhandler.s and
by dpflib/dpflib.c on the target.

Prerequisites
--------------

You need:

- A working sdcc distribution including asx8051, aslink, etc.
- A proper Linux system with GCC
- Possibly some knowledge of the 8052, if you want to mess around

Usage
------

1. run 'make' to build the tools and patches
2. Initiate USB connection from the DPF via the menu
3. Wait a while and check dmesg for the /dev/sgX assignment
4. Run 'python hackit.py /dev/sgX' as root (CAREFUL!!!) to probe for
   known DPFs and confirm that you wish to patch the DPF according to the
   instructions.

The hackit.py script checks for a valid DPF, so you can not accidentally
damage your hard disk. Also, it runs a crc32 check on critical modules
for more safety. DO NOT CHANGE the existing checksums. Only *add* new
profiles in profiles.py, don't EVER change existing ones.

Before messing around, you might want to dump the entire flash using the
fulldump.py script.

----------------------------------------------------------------------------
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

WARNING: Do not modify the script unless you REALLY know what you are doing.

DISCLAIMER: There is no guarantee that you will not brick your DPF.
The Author(s) of this code take no responsibilities. You are completely on
your own there!
If you bricked your DPF, check the URL below for information how to restore
the flash image.

LICENSE:
You are allowed to modify and distribute the code, as long as you keep it
OpenSource. We just trust you that you have a notion of fair usage :-)

TODO:
1. Windows support, fully featured lcd4linux support via generic DPF library
2. Replace flash firmware with improved opensource environment

----------------------------------------------------------------------------

Find updates and documentation here:

http://picframe.spritesserver.nl/wiki/index.php/DPF_with_AppoTech_AX206

or here:

http://tech.section5.ch/news/?p=68

----------------------------------------------------------------------------
