This project is submitted for

Description

Bringing a Psion Series 5 into this decade by replacing all the important bits.

The completed result will (hopefully) be a portable modern Linux system with all the connectivity options expected in a modern device.

Details

The idea is to make a modern handheld computer fit into the classic Psion Series 5 enclosure. Being a really well-engineered piece of hardware to begin with, this is a real challenge! We'll see where it'll end up :)

I really hope this makes it to market! This will of course be a much more polished product than I could ever hope to produce in my home lab. While I don't think this will lead to a renaissance of the palmtop computer, I'll definitely be getting one if they become available.

This project has had a side effect I did not expect when I started this project - I actually started selling hardware on Tindie! While I really appreciate that other people around the world are genuinely interested in what I am doing, I realized that it does not make sense to spend my time doing small batch production in my home office.

First of all, I seriously underestimated how much time it would take to build the adapters. I had built several similar designs by hand before, and I thought that I had a good process going. Basically, I just stencil printed the solder paste and placed all the components with tweezers. Also, I expected to be able to pick up the pace when building several boards at once. But I have to admit that I find it exhausting to place 0402 components by hand. One or two boards are fine, but after that my speed starts to drop seriously. In practice, the time spent on each board did not get any shorter when building 10 boards compared to building a single board at a time.

Secondly, the yield was terrible. For my last batch, less then half of the boards I built worked correctly right after soldering! I had two main issues:

Handling errors - the PCB panels I designed did not have sufficient handling clearance and I ended up accidentally shifting components and smearing solder paste on my boards. I should have added a handling frame to avoid this.

Solder bridges - I did expect to see some solder bridges on the QFN package or the fine-pitch FFC connector, but that actually hasn't happened. But I did get short circuits below some 0402 components. This proved to be extremely time consuming to fix, especially since it mostly happened on the decoupling caps. I could not see the issue under my microscope, so I had to resort to desolder one component at a time, checking if the short disappeared, and then replacing the removed parts. Rinse and repeat. I'm not sure whythis happened. The amount of solder paste present was good, but I suspect that I accidentally spread / squished the solder paste when placing the components and trying to align them.

I had to find a better solution. I looked into modifying the design to add electrical testing to help me troubleshoot bad boards, but I realized that was just a time consuming way of treating the symptoms instead of actually fixing the disease. Also, it would be an entire project in its own right to create a reliable test setup. I looked into building some kind of rig to help with component placing (kind of a manual pick and place machine), but that would also become its own project.

Instead, I started looking into having the boards built for me. This was the easiest way forward, since I already had everything that was needed - a proved working layout and a BOM. I sent those to iTead, Seeed Studio and Elecrow for quotes. Elecrow came out on top of this comparison, since they had by far the lowest setup cost - in practice just a $20 component sourcing fee.

When I started selling the adapters, I made a spreadsheet listing all the production costs for the hardware. When I updated the spreadsheet using the quote from Elecrow, I was surprised to see that my cost didn't increase. This is partly due to me being able to order a larger batch of PCBs and components, but also that Elecrow did a good job of picking components. Included in their quote, I got a list of requested vs. quoted components. The only part I was concerned about was the FFC connector, but they quickly provided the datasheet when I asked, and I could confirm that it would indeed work for me. I could also have requested that they used the exact component specified in my BOM if necessary, increasing the cost slightly.

So where are we now? I just got a picture sent to me of the finished boards, to verify that they look as expected before shipping.

I am a little amused by the "QC Pass" sticker - I have not provided any information on how to test the boards, so at best they have checked for misaligned and/or rotated components....

Since space is tight inside the Psion housing, I wanted to create 3D models of the plastic parts. This proved more difficult than I expected since I couldn't easily access all areas of the parts with my calipers. So what to do?

I had tried photogrammetry a bit before. The idea is to take a lot of pictures of the object from as many different angles as possible, and then let a computer calculate the shape of the object. It's basically magic :)

However, my previous experiments didn't produce any useful models. For example, mobile apps such as 123dCatch produce 3d models that _look_ very nice, but is seriously lacking in actual resolution of the mesh. This doesn't show much when you apply a texture, but it is not suitable for reverse engineering of detailed parts.

But today I got a new camera, which inspired me to make a new, more serious attempt :)

My victim for this experiment was a plastic part that had seen better days. The Psion it came from was in pretty poor shape when I got it - it had been dropped, battery goop had been leaking into it and the plastic was cracked.

Last time I learned that both shadows and highlights mess up the 3D algorithms. Shadows are taken care of with soft lighting, but highlights require a different approach. The quickest and easiest way for me was to paint the part with matte spray paint. This removed almost all of the highlights! Note that there is special paint for this purpose that can be applied and wiped off, but I opted for the cheap and cheerful route since I couln't care less if this broken part gets ruined.

But now I just created a different problem. The algorithm works by matching features that are visible in several pictures against each other. If a surface is entirely featureless, the algorithm won't have anything to work with! To combat this, I intentionally ruined my pristine surface by doing the worst spray can job I have ever done in my life. The goal was to cover the gray primer with lots of random black spots.

This was the final result of my intentionally crappy paint job. This picture is taken in my cheap light box, but it shows a lot of promise! There are no hard shadows, no specular highlights, and it is easy to overexpose the white background. The less crap there is in the intial pictures, the less crap I hope to get in my model as well.

There are several different open source photogrammetry programs out there. One thing they all have in common is that they are a proper pain to get up and running. Thankfully, I stumbled over a guy who had made binary packages of several different programs. Check out his video:

I started out with MVE, using the instructions and default values from the wiki just to see if my pictures were good enough to get a nice mesh this time. It does take a few minutes to run through the entire flow, but in the end this was the result:

... and since I complained about how textures hides crappy meshes before, here is the same mesh without any texture applied:

Obviously there is still some strange things going on around the edges - my part seems to have grown a beard! I assume this is from the drop shadow of the part itself. Now that I have a workflow to get from pictures to 3d mesh, I'm thinking of trying the opposite approach - underexposing the pictures against a black background. That might eliminate any problems with the drop shadow. Processing the 32 images I took was maybe 30 minutes of computer time. Taking the pictures was a breeze since I can tether my new camera to the computer and just leave it on the tripod.

I'll get back with a part 2 pretty soon, these results were honestly a lot better than I had expected from a first attempt! Most of the time was spent wrestling with misbehaving software, so I should be able to pick up the pace dramatically from now on :)

I'm really happy about that, having people showing interest in your work is always a boost :)

Anyway - several people have asked me about making the keyboard adapter available. While everything you need to make one is on Github, I fully appreciate that my design is pretty challenging to put together for people with little or no experience of surface mount soldering.

So I'd like to hear from you - are you interested in getting a pre-built and tested keyboard adapter? The adapter looks like an Arduino Leonardo to your computer, so think of it as a tiny Arduino board with a connector that fits the Psion keyboard. While I'll make sure it works properly before shipping, I won't be able to provide much support or any warranty. This is mainly meant to help a few more people getting their own projects off the ground.

I have been able to spend a few hours on the project, and I thought I could share some of the progress so far.

I was going crazy trying to figure out a solution to the screen and processor dilemma. I still haven't figured out a perfect solution, but I choose to focus on other parts in the meantime.

One problem with upgrading a small, handheld device is that there are serious space constraints you have to work around. Finding out how much room (or rather how little room!) I have to work with inside the empty shell is very time consuming, but spending the time now makes things a lot easier later on.

I have two goals with the mechanical design:

Everything must fit inside the original enclosure

Reuse as many mechanical features as possible (pushbuttons, battery compartment, connectors etc.)

The easiest route towards these goals is to start out from what I already have, in my case that is a main board from one of my Psions that wouldn't boot. (Bonus points to anyone who can spot the problem, it's actually visible in the photo below)

For my first attempt, I used my digital calipers to measure the outline of the board. While this worked OK for the most part, i ran into some trouble.

I wanted to reuse components like the battery spring, but the spring holder was obscuring how it mounts to the PCB

It was very difficult to accurately measure the location of the mounting holes since they are closer to the middle of the PCB, making it too easy to take crooked measurements

The most complex shape (the lower right part in the picture) was very difficult to measure accurately, and that is the area with I have the least space to spare.

So I decided to take a more refined approach. I assaulted the PCB with my hot air soldering tools until only the board itself was left:

I had planned to harvest some components that I want to reuse for my own PCB from this board anyway. Now that the PCB was flat again, I could use a flatbed scanner to digitize the board.

At the left is a ruler I included in the scan. This was partly to help keep the PCB horizontal in the scanner, and partly to have a size reference to make sure that I got the scaling correct. This actually came back to bite me in the rear, but we'll get back to that.

With my scanned image trimmed down to the very edges of the PCB, it was only a matter of importing the image in FreeCAD and drawing the outline on top of the image.

I also did some fine adjustment of the rotation of the image to get it exactly horizontal. If you want to try this yourself, make sure that you place your reference picture slightly below your sketch plane, or it will be impossible to see the lines you are drawing.

To verify that I got the outline correct, I printed the outline on my laser printer and laid the PCB on top. To my surprise, it almost, kinda matched. I measured my printout carefully and concluded that printing something in 1:1 scale on my printer actually made it just a tiny bit to small. Once I had figured that out, I could adjust the scale and print it again. But it still looked off! What was going on?

After spending more than an hour backtracking all my work so far and taking lots of careful reference measurements from the actual PCB and comparing them to my printouts and CAD model, I realized what went wrong - the scanned image has a small difference in scale between the vertical and horizontal axis!

I thought I was being clever when I included a ruler in my scan, but it turns out the proper thing to do would have been to place another ruler in the horizontal direction as well to verify that the scale was the same in both directions. I also realized that I had been bitten by this behavior from a scanner before, but apparently I didn't get bit hard enough that time since i forgot about it...

Now that I knew what the problem was, it was easily fixed by adjusting the size of my reference picture in FreeCAD and tweaking my drawing. Now the printout and the PCB matched perfectly!

I finally got around to assembling the dedicated keyboard adapter I made before. I have had the PCBs and components for a while now, but I haven't had the time to assemble it.

When I made the board layout I took the opportunity to get some more experience working with 0402 components, and I also wanted to try to make a PCB edge USB connector. In the end I came up with a very compact design where the keyboard connector is the only thing keeping it as big as it is.

All discrete components are 0402 size, and the MCU is a 7x7 mm QFN package. I also ordered a solder paste stencil from oshstencils.com, which came out very nice as usual. The PCB was ordered from oshpark.com.

Assembly was relatively painless. I did battle a bit with the solder paste application because my solder paste had gone a bit dry. I tried using solder paste from the bottom of the container since that was less dry, but I still got "lumps" in the solder paste. On the third attempt I got it right, and I could place and reflow the components with my hot air rework station.

After doing a quick visual inspection with my microscope and checking for shorts, I needed to program the bootloader into the AVR. Then I could program it with my keyboard software through the USB interface. To do this, you need some kind of AVR programmer. I used my AVR Dragon.

I did mean to build a 1.27mm pitch pogo pin ISP adapter (which would go onto the pads marked "ISP1" on the PCB), but I haven't done that yet. I first attempted to just press a 1.27mm pin header onto the pads to flash the bootloader, but I couldn't get that to work. In the end I just soldered wires to the pads. This worked well enough, after I also realized that I had populated R3 with a capacitor...

To do the actual programming of the firmware, I did two things:

Add my AVR Dragon as an ISP programmer in the Arduino IDE

This is really simple. In the Arduino installation folder, find and open "programmers.txt" and add the following:

The next time you start the Arduino IDE, it will show up under the "Tools" menu:

Program the AVR with the correct bootloader

I want to use the Arudino Leonardo bootloader, since that has the same MCU and clock speed as my board. It's as simple as setting the Arduino Leonardo as the active board:

... and then choose "Burn Bootloader".

After that, I removed my soldered ISP cables since they are not needed anymore. Now my board looks just like a normal Arduino Leonardo to my computer, and I can upload new firmware through the USB interface.

Hello guys! Do someone have English UK QWERTY Keymap file for this keyboard? I have problem to change scandinavic Keymap to UK English, and many important keys don't work at all or have different assignment.

Haha, very nice. The hackaday AI suggested your project, probably because you're doing something technically similar. Incredibly simple looks your keyboard code - I guess all my speed optimizing that I thought I would need isn't really necessary to get the keyboard working. I should look into your code and your experiences a bit further, since 'my' keyboard is still a bit unstable at sending the correct keys.

The Series 5 was my most favorite gadget *EVER* and has been my trusty companion for well over a decade. I was very sad to let it go to a new home eventually but I wanted Internet connectivity on the go and smartphones finally got good enough. Seeing THIS project deeply warms my heart, and it would be magnificent to see it completed. Lacking Rasmus' skills, I must be content to follow and admire your work. I am cheering for you!

Hey, have been looking at this a bit more in depth lately (I'm almost there to pull the trigger and get myself one of these), I thought I would share some ideas in case they help you a bit with the project :)

My idea would be to use the Raspberry Pi compute module with a Psion, this is the info I gathered so far, maybe you've dismissed some of it, or maybe not, it would be great to know your hardware choices ;)

- Power: Have you looked at using 14500 / AA type 3.6v li-ion batteries? They don't have the biggest density, but they would fit in the original socket, and with a little rewiring, you could get 3.6v / 4400mAh for it. Adafruit sells the Powerboost 1000C, which is both a battery charger and a 5V booster. Maybe it's not too efficient to use a booster from 3.6/4.2v to 5v to put it back down to 3.3 / 2.5 / 1.8v, but having a stable output for all the needed power rails would make it a bit easier to manage maybe. Compute Module dev board's datasheet uses a PAM2306A to take the voltage down to 3.3v from 5v and an AP7115 to take it further down to 1.8v. To control poweron/off, I would use another microcontroller emulating some standard APC USB powersupply, and feed it to the Pi so it knows it has a battery connected and can make a safe shutdown without having to write kernel modules or scripts. The only downside is that your keyboard module has all the pins used, otherwise you could still use the soft ON/OFF key for it...

- Touchscreen: Are you sacrificing the original touchscreen? I don't really know how tight it is there. If you're not, it's a standard one, and by the looks of it (I can only see the photos), those buttons are just discarded coordinates in Epoc, but they are just some more XY points in the touchscreen. If connected to another controller, they would make great F1-FX buttons + mouse (it's a resistive touchscreen anyway), or at least, some nice key combos

- LCD: Have you decided which one to use? There's nothing on 5.6" with an 8:3 aspect, curious what's your final approach on this. My best candidate would be something like Adafruit's 5.0" 16:9 display with DPI input, and wire Pi's bank0 dpi ports directly to it. With a compute module, you get another SPI, I2C port in another bank so it's not that much of a loss, given that the other choices tend to involve energy hungry hdmi converters or poor resolution i2c displays.

-USB Hub: The CF bay looks like the perfect spot to hide 2 USB ports for any storage needs. I haven't figured out how this could coexist with the embedded eMMC of the compute module, since you need USB slave mode to program it and it would need some way to fully disconnect it before flashing something in there

- Wireless: Compute module has a second SD port, SDIO compatible. That's how the Pi Zero W has wifi connection available, though, if using an internal USB hub, you could get the cheapest usb wifi module and solder it directly to the mainboard

thanks for your interest in my project! Always fun to see that other poeple also find this idea interesting :)

First of all - yes, the compute module was my first candidate for this project. (That's where the project name came from originally). There are a few issues that bothers me though. Most of those issues boil down to missing support for DSI interfaces. There are no drivers available for anything else than the official 7" screen from the RPi Foundation. New (open source) drivers are being developed, but there are not guarantees and no timeline. Another problem is the lack of power management features. Basically, the hardware support in the Linux kernel is not as well developed as I would like. Broadcom has not provided any official documentation for the community, everything is locket away behind NDAs which goes against the open source nature of my project :(

So right now I have switched my focus to the BeagleBone Black instead. The newest variants uses a SoC which can be routed on a 4-layer PCB and soldered in my home workshop. The upstream linux support is a lot better, all parts can be sourced from i.e. Mouser, and all documentation is easily available for all included components - including the power managment features.

The only downside for me is that it doesn't have a DSI interface either, but since I can't use the one on the RPi anyway, that isn't a dealbreaker.

The DSI issue leads us into the screen problem - as you know, there are no direct replacement screens available. The best (and cheapest) option is to use a smartphone screen, and they almost exclusively comes with an DSI interface only. An DPI interface could work in theory, but they have fallen out of use for portable devices due to power consumption and space limitations. Space is an issue as well - I'm not sure I could fit the 40-pin connector from the adafruit screen through the existing hinge design. If possible, I would also like to have a bit higher resolution, but nothing is set in stone. :) The current plan is to find a suitable 5" smartphone screen and build my own adapter for it. See for example the Kickstarter for the MangaScreen 2 for a similar solution.

The original TS will be scrapped, since it requires a pen to use efficiently (I might use the empty pen slot for a headphone jack instead). Since I won't fit my replacement screen anyway, I'll rather have some extra room for the screen. If my replacement screen has a touchscreen I'll implement that of course.

The power supply has given me a lot of headache to be honest :) Here's where I'm at currently:

With by current BBBW design, the only time 5V is actually needed is if I want to use the USB host features. I like the idea of being able to use either two 14500s in parallell, or two AA alkaline batteries in series, just like the original. I have an idea on how to make that work, but I'll need to test it out. I won't have an USB hub in my design, mostly to keep the average power consumption down but also lower the peak power needed. (For each USB port I make available to the end user, I need to be able to provide an additional 500mA@5V...) This also means that there is a redesigned keyboard adapter coming up using HID over I2C, which is what I'm currently hacking away on :)

I hope you'll keep following my progress, and thank you again for your input, really appriciate it! :)

Thanks for the stuff on github! It saved me a lot of time! Although the schematic in Keyboard part 1 caused me a lot of head scratching :) Schematic on github seems to more or less work for me - some keys are swapped, but that might be problem on my side...

Thank you! Yeah, the schematic in the project log is wrong... but I didn't realize until I got to the first proper prototype :) I think the schematic on github should be correct (at least row/column assigment). Shouldn't matter for the actual hardware, but it makes the software a lot easier to understand :) You can always double check the function with the scanning sketch (also on github).

Have you seen the Gemini PDA campaign on Indiegogo? Not that I think it should discourage your project (where's the fun in just buying something that anyone can get!) but they seem to have sourced an 18:9 screen that looks like it could fit your project quite well.

Add your commentfeeling a bit silly now, a month ago I had a big cleanup of old tech and threw out my WinCE2 PDA that I had been saving. Eventually realizing that it was too underpowered for practically anything , out it went. If only I had seen this inspirational project before .Touchscreen too.

The project is at the corner from prototype to serial production and is completely open (hardware design source will be released with first production run). the modular design of the Pyra will give you a designed ready CPU board with all information of the design and a very vivid community. i have quite a short connection to the head of the project and he completely liked the idea of having the same CPU board running in one of those old PDAs by just designing a new carrierboard for that.

That is a really interesting suggestion! I've been looking at the BeagleCore which also provides a modular CPU board. Do you think you could get me some preliminary data on the CPU module? I'm especially interested in what interface they are using for the LCD.

As the first information it's an OMAP5432 CPU and it is yet to decide, if it will get 4 or 2GB of RAM or if both modules will be available. but I'll ask for some more information (there was some special hardware to get the portrait LCD displaying landscape, but that's quite not my knowledge). Maybe I'll hint you to the important threads in the forum. Or you can use the forum yourself, too. It's english anyway.

If contrast was your only concern, you could always opt for epaper. I am not sure if anything on the market matches the size requirements you are looking for but it fits all of your requirements. Low power, high contrast, low refresh speed. Some are even capable of low frame rate video. Just a thought.

By the way, I read that you are looking for a screen. you think keeping the original one could be an option? I found the pinout on a old forum and I wonder if that could be a good way to keep the power consumption to a minimum...

Hi Cedric, and thanks for the tip! :) I've seen those before, unfortunately they are a bit too thick for the lid :(

Keeping the old screen would be very easy from a engineering perspective, and like you say it would help with power consumption. The problem is that the original screen is kind of horrible when compared to modern alternatives. There's just not enough contrast :(

That said, I'm strongly leaning towards building the first version with the old screen just to get the project moving in the correct direction. There are still a lot of challenges to solve beside the screen :)

Even in those days the screen was really horrible :) The Psion series 3 had a beautiful screen full of contrast. Of course the 5 had the touch layer which made it worse. But not THAT much worse. It was just not as good a screen.

I've never understood why they didn't fix this when they brought out the 5mx.

Great project by the way. I still have a 5MX (upgraded with bluetooth ;) ) and will be following this.

Yeah nothing special really :) Just got one of those castellated board bluetooth modules, and soldered it to the serial lines on board (the bluetooth board was 3.3v so I soldered it to the input to the rs232 level converter chip). The bluetooth board supports AT commands so I could uplink through my Sony phone (at the time using the Dialup profile). This was in 2008 or so.

Unfortunately, with modern smartphones this doesn't work anymore, they only support bluetooth PAN. I was actually thinking of replacing it with an ESP8266 in its native serial-to-wifi mode instead. But by now my Psion has fallen into disuse due to lack of encryption and other modern protocols.

I still have the Psion and I meant to open it again to replace the failing display cable (I got one of those from psion flexi) so I'll see if I can get around to doing that soon and will post a picture.. But it's nothing special like I said. Just a bog standard bluetooth to serial board and some kynar wires to hook it up.

Nice! Make sure to start a project log, I'm really interested in seeing your approach :) I haven't abandoned the project, but work has been intense and I haven't had the time and energy. I hope I'll get back on it soon :)

Registered just to comment... Loved these things when they were out. Thought of building one of these myself. Maybe I didn't see it, but what are your ideas for the mainboard? Looks like the SODIMM version of the raspberry pi could be a nice fit with a little adapter board, and would allow you to use a zif+flex for the usb keyboard module making everything smaller.. Just my two cents :)

Yes, I did actually started thinking about this project when I saw the compute module :) The earlier version of the Psion 5 (not the mx model) actually used this design.

So that accproach is still an option. What I don't really like about that idea is that the available interfaces on the RPi is a mess still. I would have liked to use the MIPI-DSI port to drive a cell phone screen, and I had high hopes that it would become accessible when the foundation released their official touchscreen. That didn't happen - the interface only works with that exact screen, no option to use it for other screens. Since there isn't a proper parallel LCD interface either, that leaves me with the HDMI output only. And then my only option would be to convert HDMI -> parallel -> DSI.

I would rather not go that route, but we'll see where it ends up :) There are some interesting Allwinner chips out there, but they lack a lot of upstream linux support.

I looked into the kernel source, but couldn't find the dsi driver kernel module. I guess it will be buried inside some proprietary blob... So much for "open hardware" :( As you say, there are a lot of boards out there, just be careful with all those mali gpus with closed sourced binaries that only work with some specific versions of user libraries... Qualcomm is a bit better at that but they're still pretty closed too.

Anyway, just in case you end up trying to make the original display work, there was some ancient linux port for the original Psion 5. It used a 2.4 kernel, so it would need a lot of refactoring to actually use it in anything modern, but it can be useful to know how the original display worked...

Yep, that's seems to be the situation. The RPi has never been very much about open hardware unfortunately. At least the general trend with Linux SBC:s seems to be moving in the right direction, I'm sure something useful will pop up sooner or later :)

The only problem is that the display is abysmal by today's standards. Poor resolution and pretty terrible contrast. I'm surprised at how bad it is, I had remembered it as being a lot better. I guess I have become spoiled over time. :)

The Pi does have up to a 24bit parallel LCD interface (RGB DPI Mode), with PCLK, DEN, HSYNC, VSYNC.. that works with the current kernel without much work involved.. there are many screens that can be put into RGB DPI mode, have you considered those?

Nice project! I'm currently working on a mini laptop with a pi2 5" lcd and a keyboard from a HP Jornada. Currently waiting on some parts from china. I was actually thinking of using this keyboard instead but already ordered the Jornada one.

As of now, its made of thin sheet of mdf hot glued together (I cut up a clipboard). It doesn't sound like much but it is pretty rigid. I'm thinking of starting my own project on here to post pictures. I thought of getting a whole jornada and gutting it to update the electronics kind of like what your doing with the series 5. I wouldn't do it to a working one though lol. I think I can piece togethter a housing from replacment parts off eBay. Might still do it don't know yet because i kind of like the mdf look. It looks more diy to me lol.