- Linky for the 84+/84+SE/84+CSE
- 06 May 2013 10:29:52 am
- Last edited by BrandonW on 16 Aug 2013 01:01:42 am; edited 1 time in total
I've started on the usb8x rewrite for the 84+/84+SE/84+CSE, called Linky (after the usb8x equivalent for the 89Ti):
(The screenshots don't matter, I'm just proud of the fact I finally displayed something on the 84+CSE's LCD.)
Binaries: http://brandonw.net/calcstuff/Linky.zip
Source: http://github.com/brandonlw/Linky
The plan is to support both USB host and peripheral mode, implementing USB "correctly" instead of the hard-coded-delay mess that is the TI-OS implementation. I think we understand enough now about the MUSBFDRC controller that we can make this a reality.
Host mode will address some longstanding issues with usb8x (like sending certain large packets) as well as hub and multiple driver support -- not only will you be able to attach more than one USB peripheral at the same time, but two different programs/applications can communicate to each at the same time. That way you can do things like hook up both a keyboard and flash drive, or keyboard and mouse, etc.
It's a little ambitious, I know, and it's far from done, but as a teaser, I've added a "DFU mode" tool that makes the calculator show up as a DFU (Device Firmware Upgrade) device, so you can read and write raw images to the flash chip using the standard "dfu-util" command line utility (for Windows, Linux, and OS X).
You can use it to create a complete ROM dump, or you can "flash" a ROM image right onto your calculator, which (as far as I know) has never been done before, all via USB.
For "download" (flashing) mode, it copies itself into RAM and runs interrupt-less and OS-less so it's free to overwrite the OS (and certificate, if you specify it).
To dump the ROM:
1. In LINKYDRV's Tools menu, select 1) DFU ROM Dump, then choose whether to include the certificate or not. The option is there in case "with" doesn't work (because of a patched unlock exploit or something).
2. If on Windows, download and run the "zadig" utility to install a WinUSB driver for the new device that's shown up.
3. Run the dfu-util command line utility with: dfu-util -U dump.rom
To flash a ROM:
1. In LINKYDRV's Tools menu, select 2) DFU ROM Write, and then choose to either write the certificate or ignore it.
2. Run dfu-util from the command line with: dfu-util -D dump.rom
NOTE: DO NOT choose to write the certificate when flashing the ROM unless you *know* the file you're flashing includes a valid certificate.
It still needs a lot of work, but it's the start of a "clean" implementation of a flexible USB activity hook (or interrupt- and OS-less polling function, if you need it).
I'll flesh out peripheral mode more once I start porting over more "drivers" to it, but for now it's time to focus on host mode.
(The screenshots don't matter, I'm just proud of the fact I finally displayed something on the 84+CSE's LCD.)
Binaries: http://brandonw.net/calcstuff/Linky.zip
Source: http://github.com/brandonlw/Linky
The plan is to support both USB host and peripheral mode, implementing USB "correctly" instead of the hard-coded-delay mess that is the TI-OS implementation. I think we understand enough now about the MUSBFDRC controller that we can make this a reality.
Host mode will address some longstanding issues with usb8x (like sending certain large packets) as well as hub and multiple driver support -- not only will you be able to attach more than one USB peripheral at the same time, but two different programs/applications can communicate to each at the same time. That way you can do things like hook up both a keyboard and flash drive, or keyboard and mouse, etc.
It's a little ambitious, I know, and it's far from done, but as a teaser, I've added a "DFU mode" tool that makes the calculator show up as a DFU (Device Firmware Upgrade) device, so you can read and write raw images to the flash chip using the standard "dfu-util" command line utility (for Windows, Linux, and OS X).
You can use it to create a complete ROM dump, or you can "flash" a ROM image right onto your calculator, which (as far as I know) has never been done before, all via USB.
For "download" (flashing) mode, it copies itself into RAM and runs interrupt-less and OS-less so it's free to overwrite the OS (and certificate, if you specify it).
To dump the ROM:
1. In LINKYDRV's Tools menu, select 1) DFU ROM Dump, then choose whether to include the certificate or not. The option is there in case "with" doesn't work (because of a patched unlock exploit or something).
2. If on Windows, download and run the "zadig" utility to install a WinUSB driver for the new device that's shown up.
3. Run the dfu-util command line utility with: dfu-util -U dump.rom
To flash a ROM:
1. In LINKYDRV's Tools menu, select 2) DFU ROM Write, and then choose to either write the certificate or ignore it.
2. Run dfu-util from the command line with: dfu-util -D dump.rom
NOTE: DO NOT choose to write the certificate when flashing the ROM unless you *know* the file you're flashing includes a valid certificate.
It still needs a lot of work, but it's the start of a "clean" implementation of a flexible USB activity hook (or interrupt- and OS-less polling function, if you need it).
I'll flesh out peripheral mode more once I start porting over more "drivers" to it, but for now it's time to focus on host mode.