Altplayer is alternate firmware designed to run on all windows CE based portable daisy players for the visually impaired that were originally manufactured by Plextalk or modified and redistributed by The American Printing house for the Blind (APH). The goal here is to take these small devices intended primarily for simple yet accessible DAISY/podcast/other audio playing/streaming/recording purposes, and make them do as much more than that as utterly possible, including the ability to play games, perform true limited web serfing without having to first transfer .opml or .m3u/pls/asx files first, play/handle many other types of files, and VERY IMPORTANTLY TO OUTCLASS THE PERFORMANCE OF THE STOCK FIRMWARE ON THESE DEVICES AS MUCH AS POSSIBLE!
I'm the main developer of this firmware, Sam Tupy. I've used a Book Port Plus since my vision teacher gave me one some time in elementary school, and by the existance of this project, have clearly fallen in love with it. I used it and still use the thing all the time for digital media consumption. At some point durring the course of learning how to code and hack and generally use a computer for more than a word processor, I started viewing the Book Port Plus not as a portable digital talking book player, but as a very little computer, all be it one with rather unique hardware connected to it. One that had a very convenient number of buttons in very convenient places, a good speaker, audio in/out jacks, an SDHC slot (which BTW is very much not limited to SDHC), and pretty much everything else I needed to make the smallest, cheapest and most nimble little notetaker style device we have today, I realised. And as we all know, computers are only limited by the hardware giving them their power, and the software running on them giving them their logic. At some point, to my utter joy, I found a way to run my own software on the Book Port Plus's hardware, and as a result, we now have altplayer!
As stated, the 2 biggest goals of this alternate firmware are to A, get these little devices to do as much as we can make them do and B, to outperform the stock firmware that comes with these devices as much as possible.
These devices are really just little computers with carefully selected hardware, and, unfortunately, with very quickly stagnating software. APH is pretty much done with the plextalk products it seems so if you have a Book Port Plus or Book Port Desktop your stock firmware will never change, and Plextalk is on its last iteration of their products anyway and so for lack of a better term, your plextalk devices are going to start losing replayability as well. The last innovation for these devices came years ago with daisy online support and though the hardware is still vastly more than caipable of it, no new features have been added or likely ever will. (Do you really think that a simple pop3/SMTP mail client takes all that much more processing power than daisy online, smb filesharing or podcast downloading? No, and we don't have it.) But now that we run our own software, we can, well, just simply make these devices do whatever we code them to do. Since I started this project, the utter sence of imagination and endless possibility I feel whenever I pick up my Book Port Plus is truely palpable to me. So rather than coming up with carefully laid plans or spending time thinking of things we may possibly do with these devices using this project, the much more chill vibe that we're aiming for here is that we randomly think of something we wish we could do on a portable device like this, and then unless we find that the device hardware itself or real life really prevents us from doing it, we may add it because like, why not?
One of the biggest problems with the stock firmware on these devices is how terribly slow they become for advanced computer users. The Book Port Plus and PTP1 for example use Vocaliser automotive for anything requiring synthesized tts. The voices sound OK but they're so slow it's almost a wonder to me that they were ever eventually included. Like OK I don't care how you end up letting your public device firmware take nearly a full second from key press to single character anouncement when reading a text file by letter, but IMHO that's either some really low standards or some not very thorough testing bro. The recorded guide voice on the stock firmware is probably very useful for more basic and/or dyslexic users of these devices, so too probably are the slow but natural sounding TTS voices. But for me as an advanced computer user used to synthesizers speaking at several hundreds of words a minute, hearing "Music. One. Hundred. Twenty. Seven. ... ... ... US hot 100 (2019)" just gets... (I mean just bring on the water torcher already), particularly because on the stock firmware, if text is being synthesized, YOU CAN'T SCROLL! If on the stock firmware I'm on music 127 and I need to go back to what I will learn is music 119, I don't get the liberty of quickly pressing the left arrow key several times and then stopping to hear whether I've reached my desired album. Oh no, instead I press it twice or 3 times quickly and by then the device already tells me to please wait, and sometimes if I continue spamming the key while it's telling me to please wait, it'll just restart the message and tell me to please wait again until I stop spamming the button. I have at least one friend who'd taken to nicknaming their Book Port Plus their "Please Wait Device." Needless to say, those kinds of issues are absolutely unacceptable in altplayer to the maximum extent possible. I'm not saying we'll ever be perfect, I can think of a few lag issues we have now even as I'm writing this, but our issues don't encompass the entire device operation and instead are much smaller in nature, for example, seeking around in a particularly complicated type of audio file that takes more CPU power to process in the media player. But if ever 2 devices are sitting next to each other with one device running a version of altplayer that's 6 months newer than the other, and if the user would knowingly keep choosing the older one because it's generally more satisfying and convenient to use because it's generally faster and less laggy, then we've been doing things wrong over the past 6 months and need to reevaluate. If your coding for this project, code with speed in mind. If your code can't handle when the user starts spamming buttons, then typically your code isn't good enough. That's not to say that if the user presses the calculate pi button in your applet 10 times in a second that your applet is expected to calculate 150,000 digits of pi 10 times a second as well, but just that your code has a graceful way of handling keyboard messages while it's busy, such as diverting them to another thread so that the user can still move around your interface and can be told that pi is currently being calculated when the button is spammed, rather than the entire device locking up while pi is calculating.
Though this is plastered at the bottum of every page on this website, I want to make it clear here as well. The Altplayer firmware has not been aproved, endorsed or recommended by APH or Plextalk. I'm just a random dude who figured out a way to root his Book Port Plus, one who's crazy enough to spend the massive amounts of time required to make this project a thing. I disclaim ANY and ALL responsibility for what happens to you, your data, or your device as a result of using this firmware. It's not official! I have not of course been able to create this project using the actual platform sdks, packages and libraries that the OEM (Plextalk) gets to use. This means if I want to tel the device to power down, I have to reverse engineer the stock firmware to figure out what message it's sending to the pwer button driver, then I have to hope I replicate it perfectly every time. All device specific driver message identifiers and IOCTL codes have been gathered through reverse engineering and shear broot force, as well as the structures to use them. I'm just one human with an utter lack of documentation and header files here, so it's entirely possible I could break something by guessing wrong and somehow not noticing until I release the firmware update that accidentally completely nukes your VariableArea partition instead of reading the serial number from it, thus really messing up your device. So basically, if you use this firmware, you understand the risks in doing so, and agree to not hold me at all responsible if you end up in the hospital because of the device blowing up in your hand because the wrong IOCTL was sent. Damn could you imagine that? DeviceIoControl(hDevice, IOCTL_DEVICE_SELF_DESTRUCT, ...)... yeah OK anyway. I think you get it now.
This alternate firmware is an independant project that is not endorsed, aprooved or recommended by APH or Plextalk. There is no money making endeavor here, nore is there any intention or attempt here what so ever to harm APH and/or Plextalk by the existance of this project. Please note that you use this firmware explicitly at your own risk, it is a project made only for fun that I thought others may find cool as well (nothing more). Though we will of course attempt to keep everything as stable as possible, a lot of device specific identifiers, IOCTL codes and functions have been reverse engineered or guessed, rather than having been found through documentation or original OEM header files. All developers of this project including me entirely disclaim ANY and ALL responsibility for anything what so ever including loss of data, destruction of device or even, as unlikely as it is, physical indury that may result in your use of the Altplayer firmware.