So this topic here is a basically to be used to document any USB stuff that I'm planning to teach myself about in these next few months. I literally understand next to nothing about USB in general, and there's very sparse documentation on the actual controller inside of the CE, and no documentation on any of the protocols or setup required for calc to calc and calc to PC communication. Here's some of my goals that I hope to accomplish by the end of this school year:

1) Learn in-depth on how USB operates, what protocols are used, with a specific focus on packet types and setup on the CE
2) Document the CE protocols and communication requirements for exchanging packets and bytes of information between calculators, computers, and other devices
3) Create a USB library for use in C and assembly programs using the current toolchain setup
4) If time allows, create a program for interfacing with flash drives and the like (similar to the usb8x and msd8x combination)

If anyone has any things they happen to come across or advice/suggestions for tools to help in this process, such as USB protocol analyzers or any other things that have been done already for the 8x series, feel free to let me know so I can make progress faster Smile I hope to learn a lot, because I'm definitely going to need to Razz
I think these are all really great goals, and I can't wait to see where you go with them. I'd point you at this topic that I encouraged KingInfinity to start with his preliminary investigation some time ago:
https://www.cemetech.net/forum/viewtopic.php?t=12484
Good luck, Mateo! Very Happy
Ah, this is great, I look forwards to seeing what you post.
I miss the I/O port because that was pretty easy to use to interface with other devices and such, and so I've been trying to figure out how to use USB myself.

Good luck!
For calculator-PC communications, you have to remain within the confines of the USB driver, or use the libusb drivers like TiLP does. The reason is that you do not want to perform raw communications with the calculator because it will require a custom driver and getting it signed is a PITA with a $400 cost. I recommend using Wireshark + USBPcap to intercept USB traffic. You could also treat the USB interface as a regular RS232 serial port and do things that way.
Has there been any progress on this project since 2016?
As far as I know, this is about the only USB-related program for the CE.
Cool, is there any documentation for it? I think I can figure it out just by reading the code but it would be even better if there is.
1 and 2 are done. 4 is in the works, and 3 is currently being slowly worked on.
Looking forward to this very much Mateo! I could use some more memory on my calc.
***LAX18 Runs
MateoConLechuga wrote:
1 and 2 are done. 4 is in the works, and 3 is currently being slowly worked on.
Where can we find the documentation that (2) being done implies? Smile
So I've been slacking, but I've got a full fat32 library up and running. There's a minor bug with writing that I'll need to track down at some point, but reading works great.

Video: https://usercontent.irccloud-cdn.com/file/2i5XnuOJ/out.mp4

Source: https://github.com/mateoconlechuga/usb-fat
That's awesome!
What kind of read/write speeds can you get? Presumably it would be faster than the older libraries for the monochromes...
Is it expanded storage? what is this?
Some initial tests: (Test drive: Kingston DT50 16GB)

KiBps = kibiBytes per second
KiB = KibiByte
MiB = MebiByte

* Read: 325 KiBps (4 MiB @ 12.8 seconds)
* Write: 23 KiBps (4 MiB @ 183 seconds)
* Read: 325 KiBps (4 KiB @ 0.01 seconds)
* Write: 43 KiBps (4 KiB @ 0.09 seconds)

Please note that this has the entire overhead of the fat filesystem. Writes include potentially multiple sector reads and writes, while reads have to scan the cluster chain. Performance for raw sector reading and writing is below:

* Read: 552.5 kiBps (4 MiB @ 7.6 seconds)
* Write: 552.5 kiBps (4 MiB @ 7.6 seconds)

I have also successfully dumped a rom onto the flash drive and ran it from CEmu. Neat stuff.

Progress continues Smile
So its like a storage expansion?
Yes, those numbers are just read and write speeds onto one of Mateo's flash drives. I'll bet it's going to be more than just expanding storage though. Wink
This is all about the USB port on the CE! It does include storage expansion through a flash drive, but it's sooo much more than that. I really suggest you re-read the first post. (I've chopped it down to the main points.)This topic is to document any USB stuff.1) Learn how USB operates.2) Document requirements for exchanging information between devices (such as calculators and computers).3) Create a C USB library.4) Create a program for flash drives and the like.
That's fast enough to play music in real-time off of the flash drive Evil or Very Mad
Looks amazing! Smile I can't wait to see where you take this amazing project! There are so many cool applications for this.
Awesome work Mateo, and I certainly look forward to playing around with this, both for future Star Trek functionality and for my AV/Firewall program. To that end, if you need testers, count me in. Will this become a part of the toolchain, or released separately?
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement