16 June 2021

Bluetooth SNES Controller to SNES Converter via Raspberry Pi

A long time ago my (half) brother let me use his SNES for numerous years, but some years ago he took it back, and I was left with the games. I eventually saw a review video that Linus Tech Tips did on the Super NT, and after some months, I bought one to be able to play my SNES games again whenever I wanted to. I also bought an 8Bitdo Bluetooth SNES controller with receiver for the SNES, since I kinda wanted the buttons to have the Super Famicom colour scheme, and also because the wired controller I have is a Mad Catz High Performance controller (see below the break) that had a broken directional pad (think of it as a very cheap version of the directional pad on the XBox 360 controller). (Pretty much I was left with a short stick that still allowed use of the directional pad, but it wasn't something to use for anything serious... Also it didn't have any sort of "centre nub" that prevented all four directions being pressed at the same time.)

Anyway, Nintendo released their SNES emulator for Switch Online subscribers (I'm calling it a SNES emulator because that's pretty much what it is and it'll be easier to make the distinction), and I was able to use the 8Bitdo controller fine except for the screenshot or home buttons (which were needed for the emulator menus), but I ended up just using the Joy Cons instead. I forgot when Nintendo launched their Bluetooth SNES controller (again, making distinctions), but I bought a set of four (the max per account) so that I'd have two for the emulator and two for the Super NT. I also bought another 8Bitdo Bluetooth controller receiver for the SNES, which kinda sat after I made sure it worked with the 8Bitdo controller.

When I finally got Nintendo's Bluetooth SNES controllers, they wouldn't pair with the receivers (pretty sure that's what it was), and after checking if there were firmware updates for the receivers, there were none. I decided to take matters into my own hands since I was able to pair the controllers just fine with Pod or my phone, and it shouldn't be that hard to translate the inputs to GPIO outputs. I looked up what ways I had to level shift the 3.3-volt outputs to 5 volts, and besides transistors, I found the SN7407. I also found the CD4021 used in some example SNES/NES controller circuits.

While attempting to design a board, I ran into the issue of where to source the voltage for the SN7407, the pull-up resistors, and the CD4021. I designed an experimentation board that allowed me to switch which 5-volt source to use (either the Raspberry Pi or the SNES Super NT), and which ground to use (only for the ICs). It also had some small tactile buttons so I'd be able to test with a game running and a 5-position tiny XLR connector for connection to the Super NT (more on this later). What I found was to power the CD4021s from the Super NT, and everything else from the Raspberry Pi. I think I modded the board for some reason, but it's escaping me (I think it might've been that the buttons were supposed to connect the SN7407 input pins to ground and not 3.3 volts). With the needed information, I was able to continue on with the final board.

Originally I was going to make one Raspberry Pi handle one player, but I can't remember what lead me to making a board for both players and having one Raspberry Pi handle both players. I also had done some testing with Pod and one of the controllers to poke around with the button values and such.

With all the work I had done (thankfully no other boards besides the experimentation was made), 8Bitdo had finally released the firmware update that included Nintendo's Bluetooth SNES controllers, and I dropped the project since it was no longer needed. Unfortunately I already had bought two Raspberry Pi 0 W boards (from different vendors), but they would end up reserved for another project.

I think it might've waited a while between when Nintendo launched the Bluetooth SNES to starting this project, since the experiment board was designed in June of last year.

Resources I used before I dropped the project:


The reasoning for the 5-position tiny XLR connectors was that the Mad Catz controller had a wire break near the plug, so I had to hack something together to get it working once more (besides taping the wire to the connector in a position that it would work). I used some SNES controller extension cables to make an adapter to connect the Mad Catz controller to the SNES, an XLR to XLR extension (or to be able to plug in the experiment board), and another adapter so that the SNES to SNES extension can still happen if needed.

To fix the directional pad, I grabbed the old directional pad top and bottom from my XBox 360 controller (I reshelled it from white to black), and used the bottom to model the receiver and bottom plate for the Mad Catz controller. I got a stepper drill to increase the hole size in the controller for the new directional pad assembly and drilled it out to the approximate size of the one in the Xbox 360 controller.

I had the receiver 3D printed via FDM process and while it looked okay, it really wasn't. Besides it having a little more flex than I wanted, some of the holes were undersized, so when I did some sort of test fit (can't remember if it was with or without the Mad Catz controller), I had to use a drill to be able to separate the top piece from the receiver, destroying the only spare XBox 360 directional pad top I had. It was a little tough to decide whether to buy a button set that included the piece I needed or to order a couple dozen of the piece I needed, but I eventually went with the latter.

I think I just had the receiver reprinted with MJF (multi-jet fusion), but with it showed that I had a portion too thick because I screwed up the maths — the button press pads and the connecting plate were supposed to be 3mm thick total, not the plate itself. After the fix (and some tweaks to the keying in the plate), I sent it off to be printed (still MJF), and when I got it, it worked as intended. I also did have to find my own screws to join the top to the receiver (no screws was included with the reshelling kit), but with a small box of salvaged screws, I found something that worked (this was confirmed before I had the FDM receiver).

It looks a bit weird because the XBox 360 directional pad top leaves a larger gap in the recess than the original (though the original was long gone before this, so I don't have a proper size comparison), but it's functionally fine otherwise. I didn't realise that I adjusted the angle of the directional pad until now, but from the testing after finishing the project, I didn't notice any issues? Or maybe I'm just seeing things, I dunno.

Normal (probably about 2mm around the directional pad) and mine (about 5mm around the directional pad).


I dunno how they assembled the directional pad, but I do remember it had a 5-6mm diameter plastic shaft connecting the inside piece to the top piece, and because there was a lot of space below the top piece when pressing down, it slowly strained the plastic where the top piece and shaft meet until the top piece broke off. I think I tried to super glue it back on, but it didn't work (also, this was numerous years ago).
Since I found pictures that I had...

Boards, finished board top, finished board bottom, and modded board.

14 June 2021

Pod 126

Forgot where I wrote about wanting to wait to build another full computer until AM4+ or AM5, but I decided to build something because i3rd has a maximum output of 2 displays and I was really needing a third. I was thinking of doing an AMD mini-STX build (because by then ASRock released an AMD version of the DeskMini) because it's capable of outputting 3 displays, but with knowing how much i3rd cost, it was a tad bit hard to justify (even if I was going to reuse the storage and possibly the RAM). It also would've kinda thrown a wrench in my plan of building the AM4+ or AM5 system and a Threadripper system (at different times) while using a Nier:Automata theme.

So with the launch of Ryzen 3000 series and the X570 chipset, I began to wait for ASUS to release either their X570 mini-ITX board or their X570 mini-DTX board because of the amount of rear USB ports and such. In anticipation, I bought Thermaltake's Core V1 case because I was wanting to use a spare ATX/EPS power supply instead of buying an SFX power supply to keep the case small. I think it was about September when I gave up waiting and went with Gigabyte's X570 mini-ITX board instead and also grabbed a Ryzen 5 3600 since I was planning on doing a CPU upgrade to whatever the last supported high-core count CPU would be. It took me a while to find the motherboard because the local computer store said they had 4 in stock, but I couldn't seem to find it. Why? Because it was on the bottom shelf and practically shoved all the way back (not front-faced). (Captain Picard or Uncle Iroh facepalm here) To make matters worse, no employee was available for help, so it took 10 or so minutes before I found it.

I did a post test at my friend's because he lives much closer, and it posted just fine. At home the following day, I found out the Core V1's standoffs are just bent pieces of the metal tray, so I had to remove the motherboard's backplate. Oh right, I also grabbed 16GB of DDR4 3200 RAM from the computer store since it was the cheaper option than buying online. For the CPU cooler, I went with Noctua's NH-U9S because it was the largest I'd be able to fit in the case and Noctua's site says the cooler would handle the Ryzen 9 3950X (I think they were out and tested by Noctua at that point). Went with a Sapphire Radeon RX570 because it has 5 display outputs (two DisplayPort, two HDMI, one DVI-D) instead of the three that the RX560 has (DisplayPort, HDMI, VGA) because it'd allow a little more flexibility, even though I'd be using adapters.

"Pod 126" came from my deconstruction of the Pod numbers compared to the Yorha units. It took a while to figure out, and I think I had to do it twice because I didn't save the first spreadsheet where I figured it out. 2B's Pod unit is numbered 042 while 9S' Pod unit is numbered 153, and the way I figured it out was that 42 divided by 2 is 21 while 153 divided by 9 is 17. With 6 numbers between 2 and 9, the multipliers would have to be doubled... A table would make this easier...

Yorha Unit
Number
Pod Unit
Number
Multiplier
2 42 21
3 60 20
4 80 20
5 95 19
6 114 19
7 126 18
8 144 18
9 153 17


I'm not entirely sure what I did to originally figure it out (I only really remember that the original spreadsheet is larger than the one I have now), but this is pretty much what I came up with. I think when I first did the spreadsheet, I was under the impression that the Threadripper build would be the 8th AMD computer I built for myself, but I think when I was figuring it out again, I ended up with it being the 7th (and consequently, I had to get the corresponding Pod number since I originally was under the 8/144 impression).

Anyway, I had also gotten a couple 3.5 inch drives to replace the 2.5 inch drives from i3rd because the Core V1 case was able to accommodate them (technically, it can handle two 3.5 inch drives and two 2.5 inch drives or four 2.5 inch drives). I also took the ThermalTake badge off the front of the case because I wanted it to look a little cleaner, even if it meant having a weird depression in the front where the badge was. The back of the Core V1 has spots for two 80mm fans, which is a weird decision since there's plenty of space for two 92mm fans instead, but I still filled it out to try to help exhaust the air. I also swapped the stock 200mm fan for Noctua's, but with how the case ended up being, I had positive pressure that ended up exhausting air out of the side intake where the GPU is.

Eventually, SilverStone Technology announced the SUGO 14 case and I was quite interested in it because it allowed installation of one 5.25 inch device, had removable filters on the side panels (the Core V1 has non-removable foam in the front bezel and nothing else for filtration), and had normal motherboard standoffs (or at least much closer to normal compared to the Core V1). After really looking around at it from the images and deciding to replace the Core V1, I preordered it and got it on launch day.

I had to go back to 2.5 inch hard drives since I wouldn't be able to mount any 3.5 inch drives with the optical drive (well, the CPU cooler also prevents this), but it wasn't too big of deal since I also ordered a 2.5 inch 2TB drive for the files and used the old 1TB from Bazett/i3rd for micellany. I had to put the 1TB drive on the front while I finished engineering (and waiting for the MJF 3D print to arrive) the adapter bracket to mount it on the removable side frame next to the CPU cooler since there was enough space to do so.

Unfortunately, after transplanting everyting from the Core V1 to the SUGO 14, Pod didn't boot. I tried borrowing Lie-chan's PSU (which was the same model), reseating the RAM, reseating the CPU, trying one stick of RAM in one slot, but I couldn't get Pod to post. My thoughts were the motherboard, CPU, or PSU since I didn't have any extra on hand, and I decided to head to the computer store with Pod without storage for their diagnosis/repair service. Fortunately, the tech did a basic diagnosis with a different set of RAM and different PSU and Pod booted, confirmed that it was the PSU after the tech put my RAM back in and used a PSU tester on Lie-chan's PSU (I didn't feel like putting Pod's PSU back in when doing my bit of diagnosis). After buying a PSU, I went home and everything was fine, but I didn't think about how the case holds the PSU, so Corsair's PSU was not the best choice because of the large chamfers on the edges. I decided to just make some adapter wedges to make it sturdier, and after a second round, it worked (first sets were bad because I didn't get proper measurements). Also had some of the other employees at the computer store ask about my case, which was kinda cool to incidentally show off a brand new case.

With the new PSU, I decided to try CableMod cables out for the ATX connector because I didn't feel like taking Pod offline to see how Corsair wired their cable to make my own. While the CableMod cable was better than the one from Corsair (in terms of excess length), I ended up figuring out the wiring of it (before using it) and the Corsair cable (after the cable swap) and made my own which would be shorter and less annoying than either. I also did a custom PCIe power cable adapter back when using the Core V1, and then made a custom cable for the Corsair PSU. I also made a custom EPS connector for the Corsair PSU. I think it was sometime after I got the custom 2.5 inch HDD bracket when I made the custom SATA power cables for all the drives, including the two bays in the front.

I only have a 120mm and 140mm fan as the top and rear exhausts so that it's negative pressure, and I was planning on the PSU also be exhaust, but the PSU has a 0RPM mode, so that plan fell through. At least with the airflow being negative pressure instead of positive, the GPU stays cooler now.

I also made a magnetic swivelling cover for the power button that has Pod's name on it because I didn't want to accidentally press it (though I have it set to do nothing in Linux and Windows) and to also be able to have the power on light on because it looks nicer than the power on light on the Core V1.
Without and with magnetic swivelling cover.

Underneath the small hexagon at the top is a 4mm diameter magnet press-fitted into a recess, and another 4mm diameter magnet is double-sided taped (the thin stuff, not the foam stuff) to the inside of the case so it's easy to remove if I decide to remove it for whatever reason.

I also got another NVMe SSD for Windows installation, and GRUB ended up detecting it just fine. One weirdness is that with UEFI/BIOS, I have to have CSM off and not have anything in the boot order because if I choose the Linux SSD, Pod will boot to Windows.

When Ryzen 5000 series was launched, I had the ability to buy the Ryzen 9 5950X that I wanted (since the 5000 series would be the last of the AM4 CPUS), but I didn't and had to wait until mid-February this year before the computer store had enough in stock for me to be able to get one right after work. I was going to run some benchmarks with Phoronix Suite, but I didn't know it needed to download the tests, so I ended up giving up the idea because I wanted the 5950X in ASAP. Though I don't have too much of a comparison, it's still crazy to be able to convert 32 songs at the same time compared to 12. (Song conversion's one of the few things that's multi-threaded that I can use as a loose benchmark.) I was also considering compiling C++abi or something like that for a test comparison (old dependency for FreeFileSync required it before the dependency was changed), but I probably forgot at that point.

I haven't used Pod so much in a way to flex the the CPU that much, besides compiling dependencies when needed, and the "converting my library to OGG" has a bit of a problem. I thought the MP3 gain programme is multi-threaded, but I was sorely wrong when testing it out. The reason for mentioning it is that back in the days where I primarily used Windows, I had used MediaMonkey to apply a permanent volume levelling to all of my songs, and because OGG is gained by adding replay gain info to the tags, I would need to re-gain all the MP3s to "CD loudness" (about 99dB) before converting to OGG. While I don't know how long it would take to do the re-gain of all the MP3s, I do know that the conversion would be quite quick in batches of 32. (I think there's also some weird crashing issue with the gain programme anyway.)

RAM might be the next upgrade later on, but I dunno when that'd be. I could also swap the RX570 for Melty's RX480, but we'll see.

I think that's it, unless I forgot something, to which I'd probably edit this post or something.

Bazett

Not too much to say, so it'll be fairly short.

At some point I decided to have something a little more portable than Triela, and decided on HP's ENVY x360 with the Ryzen 5 2500U (Zen) and 1TB HDD upgrade (256GB M.2 NVMe SSD standard). And while waiting for it to arrive, I was curious on it's performance compared to Melty, and by UserBenchmark's scores, the 2500U was better... Oof. (Since UserBenchmark changed stuff, it seems like the FX-8320 is slightly better? Weird.)

I replaced the 256GB M.2 NVMe SSD (from Lite-On) with a used 512GB Samsung EVO 970, and gave the 256GB NVMe SSD to i3rd for an OS drive. The 1TB HDD was replaced with a 2TB HDD, and the 1TB HDD also went to i3rd for the local copy of my files (the 500GB HDD became a catch-all). I also manually upgraded the ram to 16GB because it was slightly cheaper than what HP was asking for.

For naming, it was a bit tough because there's a "professional" look to the laptop and so I kinda wanted to match that as best as possible. I used AniCDB's search and I think I looked for characters with the suit tag, and then looked through them all. Eventually came upon Bazett Fraga Mcremitz from Fate/hollow ataraxia, and though her appearance was what I was looking for (ignoring additional images), I think there were still results to go through.

Because of Bazett's portability, I used to spend every Friday (or every other Friday, I don't remember now) at a coffee shop to (try to) work on my stories, and then a nearby library later since the coffee shop's internet was really poor.

The ability to fold it is nicer than than I had originally expected (I think I didn't really care), so I can arrange it where the keyboard faces the table to put the screen closer to me (I usually have an external keyboard in this mode) or in either "tent" mode (screen facing in or out) when I have it doing background stuff (such as Windows updates) while on my bed to shed heat a little better. I rarely use the tablet mode since I'm hardly ever in Windows and Linux doesn't disable the keyboard (there's probably ways to make it aware of tablet mode, but meh).

11 June 2021

Fiio X5 III/iBasso DX150/Neutron Music Player

This is sort of a follow-up to my Digital Audio Players post.

I think I figured that I could utilise a playlist to be able to listen to my entire library shuffled in Fiio's music app and used Rhythmbox to generate the playlist (I think .m3u?) and then go and change the paths of the songs to match the structure on the micro SD card. I made two so that when I finished with one playlist, I could start the other and then update the finished one later on.

I forogt when it was (I feel like it was 2018), but I was having battery problems with the X5 III, which was partially my fault because I tried to keep it at or close to 100% charge (the other part is likely Fiio's fault for either having a faulty battery protection circuit or not having one). I ordered a portable charger to keep it powered on because it got to the point where it wouldn't hold a charge.

While I was looking around and reading reviews, my choices came down to iBasso's DX150 and Hiby's R6, and I chose the DX150 because of the button layout because the R6 has the volume up button directly opposite from the power buton (The X5 III has the play/pause button directly opposite of the power button and that got annoying).

Out of the box, the DX150 sounded a little clearer than the heavily-used X5 III, but while typing this, I feel like the comparison is a little unfair. Anyway, the DX150 has Android and music modes, though its default music player wasn't really that great (I think I felt Fiio's was better in comparison), and I think it took some digging around before I found Neutron Music Player. Not only was Neutron Music Player able to handle a massive library, it also gave me the ability to chuck my entire library into the play queue and randomise the song order, so no longer did I need to rely on a computer and a set of two playlists... Well, when I figured it out... There's a lot of options...

A caveat is that it doesn't seem to properly detect tag changes when rescanning the library, so I've had to clear the library after updating the micro SD card so that it'll read the tags. This might've been an issue with an earlier version, but I haven't tried rescanning the library without clearing it since I developed the routine, and it doesn't harm anything to clear the library anyway.

Anyway, I've been a lot more careful with the DX150's battery so I don't end up with or run into the issue with the X5 III. I'll have it charge to/near 100% after I get home from work, charge it to/near 100% on the way to work, and then charge it a little on the way home from work so that it has plenty of battery (20-30%) before I put it on the charger after I get home. Haven't had any serious battery issues so far, though lately it's been finicky with the charger I used to use for it (which my phone now solely uses), so I had to find/use another type C charger that the DX150 seems to be okay with.

Oh, right. I forgot where I read, but I used the lurker0 firmware for the DX150 since it had improvements over iBasso's default firmware, and also came with Google Play Store. iBasso has a firmware from last December, but I haven't cared to install it because I don't want to bother with having to set the DX150 up again (not to mention I'd probably have to sideload the Play Store).

I did kinda poke around looking for a battery for the X5 III, and while I did find some on AliExpress, it seems that I would need the controller board off of the old battery to transfer to the new battery... Which I no longer have... oops. I did find an adapter cable that allows me to send power to the battery terminal, which I used to be able to get the X5 III to boot (I thought I was going to be able to power from USB without the battery, but I was wrong), and I did find the connector to be able to make my own adapter, but haven't gotten anywhere with it because the pack of connectors are out of sight and it's an extremely low priority project.

There's a bit more I could say, but I feel like I've ranted enough.

Balanced Headphone Hack/Sennheiser HD 598 CS

With the X5 III, I wanted to have a pair of balanced headphones, so I chopped the connector off of one of my Sony MDR-XB500s and found that it has 4 wires and not three, and after a bit of probing, I confirmed that the two pairs were for each speaker.

It was a little tough to find 2.5mm right angle TRRS cables, but I did find them, and after getting some 4-pole mini/tiny XLR connectors (both male and female), I worked out a pinout scheme and soldered accordingly. The reason for using the tiny XLR connectors was to make it modular, so I'd also be able to use the headphones with normal, single-ended 3.5mm devices (and it looks a lot cleaner than a bunch of heatshrink.

Eventually I decided to get new headphones because the MDR-XB500 didn't really match what I was hearing from the sound system in my car (which has the Harmon Kardon speaker system), and after some reasearch, my options were Sennheiser's HD 598 CS and some Audio-Technica headphones that I don't remember the model number. Luckily, I found both demo models in the nearby computer parts store, so I was able to swing by after work with my X5 III to check out the sound and fitment, and decided on the HD 598 CS. I bought one elsewhere because it was cheaper, and having found a good enough reference sound from this video (spefically the soda can opening) while waiting on the HD 598 CS, and when I had it, I tested it and the MDR-XB500s with it in single-ended mode. The HD 598 CS reproduced the sound correctly to my ears while the MDR-XB500 had a very dampened sound ("muddy" I guess?).

What I was looking for in a headphone was a single cable to one of the earcups (the Y cable on the MDR-XB500 was annoying over time, especially after the mod) and that it had a more neutral sound (the MDR-XB500 is tuned for more bass). I can't remember if I was specifically looking for detachable cables, but the HD 598 CS has it and because the connector to the earphones is a 2.5mm (I think) TRRS, it got me curious. After the audio test (and probably some more audio testing) when I had decided to keep them, I chopped off the 6.35mm plug on the long cable and found four wires, and after some probing, each of the wires correspond to each of the TRRS points on the headphone connector side. The cables provided with the HD 598 CS is a 1m cable that has an inline microphone and a 1.8m cable that has a 6.35mm plug, so I only had one cable to modify. I cut the cable down to a reasonable length before putting the tiny XLR connector on it and then turned the long remainder into an extension cable.

I think I continued to use the 2.5mm right angle TRRS adapter I made for the MDR-XB500s until I found a 2.5mm right angle TRRS cable on Mouser, which I bought with some more connectors. The problem with the original ones were that they were cheap and the rings and sleeve (probably the tip too) of the plug were having a ring worn into them from the plug incidentally turning around within the jack; the ones from Mouser are holding up just fine to this day.

I also made an adapter using the 6.35mm plug, but that was from the second HD 598 CS that I bought. (Yes, I have two pairs of them and two pairs of the MDR-XB500s.)

Anyway, I don't think I can really tell the difference between single-ended and balanced, but well, if I can easily DIY some single-ended headphones to balanced, why not do it?

10 June 2021

Reed Switch Keyboard

At some point ago, my best friend had some youtube videos in the background (as usual) and one of the videos was talking about a vertical reed switch keyboard (I don't remember if the video was covering many unique types of mechanical keyboard switches or some older mechanical keyboard switches), and it sounded nice since reed switches last much, much longer than Cherry MX or Romer-G switches; and are hermatically sealed, so that the contacts are unaffected by the environment.

My obvious problem was that the reed switch was vertical, meaning it made the keyboard quite tall, and after a bit of poking on Mouser, I was quite sure i could make a "horizontal" reed switch keyboard ("parallel" might be a better word?). The two cheapest ones were a through-hole variant and and SMD variant, and while the through-hole variant could be utilised however I'd like, it had a specific way to form the leads. The problem with the SMD variant was that the contacts were perpendicular from the board according to Digi-Key's image (more on this in a bit).

I also looked at magnets and found a 1/8 inch diameter, 3/8 inch length rod, which I decided on, since it would be the smallest size in the X-Y plane, and that it was going to go through a hole in the PCB to close the reed switch contacts (the switches would be on the underside of the PCB. I began designing the board, obviously starting with adding the parts to the library, and ended up adding the hole to the reed switch part for less placement hassle. I also used a Teensy 2.0 as the controller, since it's it's a popular option for custom keyboards, and also used some zener diodes for anti-ghosting.

When I went to buy the parts for my "Dual 3DS Charger", I also grabbed the reed switch so I could get a better idea of what I was dealig with. When I looked at the switch, it seemed like the contacts parallel to the board, and after carefully getting it out of the tape, it was easier to confirm. Digi-Key's images are usually of the item itself for that specific configuration, but that was obviously not the case this time, and because the datasheet didn't say anything else, Digi-Key's image was all I really had to go off of.

At the least, I didn't finish or order the test PCB, so I was able to fix what I needed to and finish the design of the test board. Also with this, I also went back to look at magnets and wrote down which I think might be suitable, regardless of material. I also ordered a couple things I would also need with the test board from mouser along with some contacts for the Dupont connectors (used for stuff like the motherboard USB 2.0 headers) and some contacts for the Molex connectors used for motherboard CPU/CASE fan headers.

I've not gotten around to soldering the test board together at the time of this writing, but I have (maybe) started the order process of the candidate magnets (along with some other items to meet the minimum.

As far as the new design goes, I'm still keeping the switches underneath the PCB so that they don't get damaged as easily, but removed the hole to make it a bit easier to run the traces. I've arranged the parts, from what I remember, but haven't ran the traces yet.

Before I forget the design is for an "extended numeric pad", so the "10-key" section of a normal keyboard with a few extra buttons (shift, tab, backspace), since I have a limited board area in EAGLE to work in.

For the test, I'll be seeing the distances that each magnet closes and releases the contacts, and the shorter that distance, the better.

The other thing I want to try to do is have a minimal "over travel" distance after the switch has been activated, considering that all "standard" keyboards are just membrane/rubber dome and activates when the key is bottomed-out. Cherry MX switches generally activate at 2mm and bottom at about 4mm (I'm ignoring the speed silver), which is a bit annoying for people like me who have a "standard" keyboard at work and mechanical keyboards at home since I'm not able to fully learn to release the keys after actuation.

I also want to make the stem compatible with Cherry MX keycaps, so that it can use existing keycaps instead of having to find some place to make a custom set (nevermind that the magnet mechanism has to be made).

I looked at springs at one point from Lee Springs (since my work ordered from them), but put it on hold for now since I haven't any ideas of the mechansim itself (and that their website's not entirely friendly if you're not sure what you're looking for).

I wanted to to controllable RGB backlighting, but it's easier said than done, since i would have to have some sort of complex multiplexing algorhythm while keeping the current at reasonable levels; I'll stick with single-colour lighting since it'd be much easier to multiplex. I wanted to try to make it compatible with PS/2, but I think I wouldn't be able to backlight it because PS/2 has a very limited current output.

My best friend also would like to try to make a side business with these once everything's worked out, and so I had thought of a few different key-count configurations along with different selling configurations. Besides the possibility of it actually happening, there's also the plausibility of popularity, since it's a fairly niche item. Though if it does happen, I did also chat with him that we would be selling all the parts, so if someone breaks a stem or loses a magnet, they can just buy another instead of having to send the entire keyboard in like most major companies (thanks Logitech for trying to get me to send my solar keyboard in because one of the scissor jacks broke...).

The "extended numeric pad" would take the standard layout of the 10-key and add a long key like the + to the left of the 1 and the 0, which would be Shift; one to the right of the enter key, which would be Tab; and one to the right of the - and + keys, which would be Backspace (also Num Lock would change to Delete). The point of this is to facilitate one-handed spreadsheet operation since Tab moves the cursor rightward, Enter moves the cursor downward, adding Shift to either of the previous combinations would move the cursor in the opposite direction, and the Backspace and Delete keys would also add to the value of keeping the hand stationary. While some peripheral manufacturers usually split 0 into 0 and 00 or 000, I find it a bit pointless since it's kidna hard to hit. For toggling Num Lock, I'd probably have Shift+5 as the toggle, and maybe have Shift+(key) to activate the non-locked function without turning Num Lock off (so Shift+9 would be Page Up, for example).

I ended up finding out the source of Digi-Key's wrong image - it seems like they pulled it from the datasheet, which is an incorrect depiction. I've also been looking at other reed switches on Mouser and Digi-Key which are cheaper and/or smaller than the one I chose, so I may be spending more time on choosing a reed switch and magnet combination.
I did design the mechanism in CAD, but eventually decided to make the mechanism rotate the magnet instead to make it easier to control the magnet, but haven't attempted to figure out the model in CAD.

Also from using Century Spring for a Cherry MX mod, I'll probably go with them instead of Lee Spring.

Project is on (maybe permanent) hiatus since it's still a lot of work and money for something super niche.

i3rd

At some point ago, something happened to the SD card for the Raspi3, which made the system freeze and it could not properly reboot... I'm guessing something ended up corrupting part of the card. I never remembered to reimage it nor did I really have the motivation to do it, and so it sat as such.

There's been some recent events that have made me kinda wish I had it up, and while I could use Triela (or Shizuma... more on Shizuma later), it's a bit annoying to use a laptop for an extended period of time sometimes... or maybe for me in my room.

I first thought of possibly buying a NUC-like thing from my best friend, but with it's low specs (Atom Z8350 or something and 4GB RAM), I decided it would be worth more to invest in a Chromebox, NUC, or another mini-STX system (I'll get to the first later).

With the lack of options, I decided on the latter and getting something more powerful than the Celery Box (the first mini-STX system). I also put the M.2 NVMe SSD in the PCPartPicker list that I used in the Celery Box, but my other friend pointed out that I wouldn't need it since there's two SATA ports - saves me 80 usd.

I first went with a Pentium G4600, since it seemed to have the best performance per value (at the cost of being able to handle some instruction sets), but toward the end, I changed it to the i3-7100 for those missing instruction sets - it was only 26 USD more (give or take).

Everything else is the same compared with the celery box otherwise - same RAM, heatsink, barebones kit. at least this time if the PSU happens to be missing, I do have a spare.

So with another VESA mount kit and a Logitech MX Ergo, I finalised my order (well orders because I bought the i3 from a different site).

Unlike the Celery Box, it'll run Manjaro, not be a headless system, and have the Wifi/Bluetooth card installed. The MX Ergo will replace the m570 (or whatever the bloody number is), so I'll have one trackball for Mei-chan and i3rd. The Wifi actually will be providing me an 802.11ac hotspot, which will be much faster when I'm trying to grab a song from the file server (or hell, from i3rd itself) than the crappy 802.11g.

Okay, so with the name, I was loosely brainstorming with that other friend, and I wanted to kinda do what I did with the Celery Box. it was a bit tougher, but she suggested doing something along the lines of "Armitage iii" (read as "Armitage the third"), and after a bit of mulling, I came up with "i3rd" (perhaps read as "I third"?) as this is literally the third Intel build for myself and it has an i3 cpu - I love it when she gives me those little sparks that light the flame.

It'll utilise a 64GB 2.5" SSD as the boot drive, and a 500GB hard drive for a more local copy of my files.

i3rd will probably spend most of its time refreshing a page (like the raspi3 was doing), but I'll be glad to have a low power, low heat (and stable) system when I need it.
I ended up using an unused M.2 NVMe SSD from a laptop (more on it in another post) as the boot drive for i3rd and added another hard drive for extended capacity (if I needed it). Later on I ended up using i3rd for a semi-successful hackintosh (more on that in another post... probably).