Smart Response XE word processor.

Pocket typewriter thing, intended for light-to-moderate text editing, without distractions a more advanced device would bring.

Similar projects worth following

The idea is to turn a Smart Response XE (former classroom gadget, now available for cheap, due to being phased out) into a pocket text editor. There is some evidence such an item may help in writing process, at least with the first draft, so I'm going to try. 

There are some challenges ahead, but I was hoping to have it ready for NaNoWriMo 2021.

Depending on the exact definition of "ready" this may be considered a success, the text editor works, and there's an option to export the text as QR code for further editing on a computer(though it is not super convenient). I'm already using this for notes, shopping list, etc. and I'm excited to check just how serious it can get.


Edit text on up to 32 pages, 4kb each. Export as QR codes.

hex - 49.47 kB - 10/31/2021 at 22:54


SmartResponseXE_ICSP (5).stl

3d printed base for aligning pogo pins for the ICSP connector.

Standard Tesselated Geometry - 151.55 kB - 09/26/2021 at 21:06


  • 1 × SMART Response XE | 03-00182 A handheld computer originally used in the classroom for taking tests. Based on Atmega128rfa1 microcontroller.
  • 1 × USB AVR ISP Programmer

  • Status bar is here.

    AbundanceOfPotentialUses10/31/2021 at 22:32 0 comments

    So I got distracted by the freshly added USB feature, and I adapted the USBaspLoader (to be precise a more up-to-date fork by Stephan Bärwolf), this bootloader is compatible with avrdude. I think the only changes needed were pin assignements, and like 6 lines in the main include to add support for atmega128rfa1 (copy-pasted from atmega1284 because they're almost the same, except for the radio part). And it worked right away. And it's actually faster than the hardware ICSP dongle I was using.

    Then I spend more time crafting nicer and more convenient to install USB port boards...

    But eventually, I got around to implementing the status bar: it lists battery status (as in voltage), current page, size of the current page in bytes and words(for NaNoWriMo), and gives a rough estimate of your place on the page.

    Function keys are now:

    • F1: save and power off (sleep).
    • F2,F3: contrast adjust
    • F6: delete(click 3 times)
    • F7: undo all recent edits
    • F8: export page as one or more QR codes
    • F9: sleep
    • F5,F10: previous/next page

    The project is now published on github. Though the code is a mess.

    To do:

    • Better exporting. Either optimize the hell out of the QR codes, or more likely implement some less computationally expensive coding and make a reader app for it.
    • Export via USB maybe.
    • Better storage handling. On the other hand, the current approach has a certain je ne sais quoi about it... maybe it is the way it feels more like pages in a notebook than files in a computer. YMMW.
    • Probably some copy-paste function.
    • feature creep?

  • USB connection

    AbundanceOfPotentialUses10/19/2021 at 22:20 0 comments

    I managed to add an USB connection. Yes it works!

    So I had an idea, instead of adding an interface board, why not just run v-USB on the atmega128rfa1, we already have 16MHz crystal and nice 3.3V regulated power, so according to vUSB wiki we can go with possibly the easiest and cleanest solution, literally just needs 3 resistors and an USB socket, so that should be easy, right? 

    It actually is. I got the prototype working in one evening. And that's including all my crap soldering work, up to and including ripping off a pad off the board (luckily there was another pad available for that line).

    I had a bit of dilemma over which pins to use, eventually settling on 25:SCL:INT0 and 26:SDA:INT1. It required removal of R41 (which is a 0 Ohm jumper connecting 26 to 52 for some reason) and R7 (which is a 4.7kOhm pull up on SCL). After my soldering struggles with the prototype, I searched for some easy trick and I spotted the reserved spot for "U5" chip has the following signals on the right hand side: [none] vcc gnd sda scl. Which is just perfect for this application! I figured I could just solder a 0.5mm pitch connector tape there and all my problems would be solved forever! I meticulously designed a little board with USB socket, the 3 resistors and a power switch(optional really). Etched it using a laser printer toner transfer method, it came out pretty nice, the parts soldered into place with almost no problem. And then... the connector tape turned out much harder to work with than expected, maybe I'm doing it wrong (I mean, I guess cutting it into ribbons and soldering straight onto the boards doesn't sound that clever in hindsight), but after a couple attempts, I had to carve out the gnd line from the tips to avoid the shorts. Never again! Okay maybe like once or twice, because I printed like 5 boards (with slightly different configurations), but once those are gone I'm redesigning!

    The vUSB part is not yet integrated with the text editor, right now it's "just" HID keyboard Example, but the potential for exporting the text files out of the device is pretty obvious. An USB bootloader could also be nice but not a priority at this time.

  • Quality musings.

    AbundanceOfPotentialUses10/10/2021 at 18:19 0 comments

    Some musing on the engineering of Smart Response XE...

    These things are just... solid. When I first opened one, I was tempted to call it over-engineered, maybe it's a requirement for education tools handed out to students that may or may not care, but it seems someone cared and went extra mile to build these to last.

    The case may be plastic but with the matte finish it doesn't scratch easily, the keyboard has friendly clicky feel. The battery cover is a marvel in itself, unlike the typical design that is held by plastic latches that wear-out and break off, this one just slides into place and is secured with a screw. And the screw screws into a BRASS INSERT. Inside, the battery contacts are some sort of super resistant stainless steel. I've seen them covered in leaked battery stuff, only to come out shiny and chrome after applying a drop of vinegar. Two are soldered directly to the board, and the other ones aren't glued or anything - the tolerances are just so perfect they fit snugly in their spots, they can be pulled out for cleaning and then put back in.

    There's also the nice touches, such as a dedicated spot for a speaker, a place for serial interface chip, and an assortment of contact pads, some of which can be bridged to route signals around the board.

    About the only imperfection of the design is lack of hardware power switch, resulting in slow drain when stored with batteries, potentially ending with aforementioned battery leak. But the QUALITY is such, that even after a bad battery leak it's quite likely to function perfectly with minimal cleanup.

    In fact, after the first set, I was so impressed with the resilience of SmartResponseXE, that I bought another set - a lot of 40 for 80$(+shipping), labelled as "stored with batteries [...], sold for parts only, no refunds"; a bit of a gamble... they've arrived, and wow:

    Of the 40:

    5 had no leak at all!

    9 had only small leaks (ie. possible to clean without disassembly) 

    22 had either a big leak all over, or looking like it might have leaked towards the insides, but seemed to power up fine. So I'm opening them up to prevent further damage. So far 6 turned out nearly perfect, and only one had damage - a broken key (and possibly a broken antenna)

    Only 4 units didn't power up, but even for those there may be a chance, for example if it's just the screen they may be repurposed into serial to IEEE 802.15.4 bridges like for the wireless bootloader.

    So, likely to end up with over 30 functioning units, and a couple of specimens for guilt-free practice of opening/hardware modding/spare parts (that's almost a feature not a bug). "For parts only" indeed.

    If the shipping to my location wasn't so expensive I'd be tempted to get another set...

    -this update was 80% typed on the SmartResponseXE text editor and exported via QR code.

  • Exporting data as QR code

    AbundanceOfPotentialUses10/09/2021 at 21:04 0 comments

    A measure of success!

    Using this nice and compact library for generating QR codes in C I added some export functions to the editor. This approach is not without flaws... the biggest QRcode to fit on the screen can only carry about 1.5k of data, so larger pages need to be split into several codes, and then stitched together, and the code generation is somewhat slow- the aforementioned largest possible code takes about 22 seconds of processing. The main advantages include: it just works, actually didn't take that long to integrate, and it doesn't need a custom decoder.

    So now all basic functionality is in place. My next plans include:

    • add a status bar with some relevant data (in particular the battery status)
    • clean up and publish the source code
    • possibly implement copy-paste
    • smarter handling of the flash chip (making it more transparent to the user), possibly with support for longer pages/files. I have an eye on something called SPI flash file system.
    • faster and more convenient export. I'm thinking along the lines of animated QR code, without all the encoding, error correction and complexity of printable codes, instead based on something like fountain code with a simple checksum for discarding corrupted frames...
    • feature creep!
    • maybe a menu or something instead of the cryptic F# key special functions.

  • Alpha release and a 3d printed adapter.

    AbundanceOfPotentialUses09/26/2021 at 20:46 0 comments

    So finally managed to get the right (well, right-ish) feel for the text editor. The text is edited as a set of 32 pages, each 4kb in size. Pages are saved in the flash chip when switching to another page or powering the device down.

    Added some useful functions to the extra buttons by the screen, let's call them "F" keys, if the left ones are F1-F5, and the right F6-F10, F1 now saves the page, F5 goes one page back, F10 goes forward. Pressing F6 three times clears the current page, F7 pressed three times discards the recent edits, and F9 puts the device to sleep _without saving_ so careful with that.

    Speaking of sleep, I added some features to the low-level library... starting with the original one by Larry Bank I copied some stuff from the one by fdufnews from the SMART Response XE BASIC, and changed some. Most notably, the power button not only wakes the device up, but also switches it off (hold for 3 seconds) and the device also auto-powers-down after about 6.5 minutes.

    Concerning the enter key, at first I put it on the "del" key, which looked like the right place, but in practice, I found myself hitting the "del-now-enter" when trying to delete, not sure why. So I reverted that. Now del is backspace, shift+del is enter, and sym+del is delete. While there I added a bunch of useful characters that weren't assigned to keys including @#^&{}, and I discovered that the funny key, for like, fractions? next to the sym, was "enter" all along. 

    In other news: I got some pogo pins for programming the SmartResponseXEs without opening the case (I got a couple, and they are not easy to open). But oops, the pins I got weren't quite optimal. After like 3 attempts to arrange them into a working connector by hand, and missing some contact points, I realized I need more precision, luckily enough my 3d printer was up to the task. The design took some tinkering but worked in the end. I'll include the printable model in the project files.

    BTW, I had trouble finding this information on the web, so for future reference, the programming holes are about 2.1mm in diameter, the pitch is about 4.76mm along the row, and 3.8mm in the other axis, and the 2 offset holes are in the middle of their respective boxes.

  • Log backlog.

    AbundanceOfPotentialUses09/19/2021 at 16:44 0 comments

    I've been working on this for some time already, so the first project log is going to be retroactive.

    There's a sort of programming connector in the battery bay of Smart Response XE, but it requires spring loaded pogo pins, which I didn't have when the devices arrived, so I opened one up - inside there's dedicated spot for a standard 6 pin ISP connector, which I also didn't have, but I improvised something out of angled goldpins.

    Note, the vcc pin in the connector is at 3.3V when powered up, so I'm not sure it it's safe to connect any external power to it, instead I'm powering the device from batteries.

    First accessing the device, I found the lock byte set to 0xcc: so, no reading the program or eeprom, quite reasonable if disappointing.

    Then I flashed SMART Response XE Tiny Basic Port [By ]. And it worked right away. This much couldn't be said about my own code. But after some reverse engineering here and there, discovering some of the misconceptions I had had about avr-gcc and cutting out a bunch of barely-correct code for potentially awesome yet completely unnecessary functionality, I managed to get it working. Some revisions later I have a bare-minimum working version: screen works, keyboard basically works, the edited text can be saved in (and read from) the included flash chip, giving 128kb of storage, oh, and long press on power key powers it down.

    I gave it a try and quickly realized the bare-minimum is not enough, so next up: tune the keyboard handling for a better writing experience. Then I'll work on the other milestones, like data export and more advanced handling of flash storage.

View all 6 project logs

Enjoy this project?



AbundanceOfPotentialUses wrote 10/19/2021 at 16:48 point

Yes. The display is completely pixel based. The fonts are included in the library (Smart response low level library) and can be edited freely. I think I even saw a variant of the library that could get font table through a pointer from the application, though I'm not sure where...

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates