I hacked together an Arduino Micro firmware that is a drop-in replacement for a Spiffchorder, long version and code below the fold.
Continue reading

Posted in Computers, DIY, Electronics, General, Objects | Leave a comment

New Backup Scheme

I’m finally not living so dangerously with the data outside my Seafile-synced live set and doing proper backups of all my machines, including laptops. I’m also now storing my various media files on a RAID instead of a single large USB hard drive dangling from whatever machine is attached to my TV. Now that the semester is over and I’ve had time to put some finishing touches on the system, here are some process docs under the fold for the use of my future-self and others – the first part is about my new home server, the second part covers the (likely more transferable) set of borg and rclone incantations, scripts, unit files, etc. that make it all work.
Continue reading

Posted in Computers, DIY, General, Objects | Leave a comment

Ebay DB25 Arduino Nano grbl Adapters

A second consecutive CNC post, because I haven’t had time to write up long-form posts for months, and something requiring documentation came up today.

While I’m still quite happy with LinuxCNC (especially since I discovered NativeCAM), my adviser bought himself a GRBL-DB25 adapter board for his 3040T mentioned in my previous post. He has been unsurprisingly unsatisfied with the performance of the terrible old SFF P4 box he has been using to drive it with LinuxCNC, and we’ve (read: I’ve) become reasonably comfortable with grbl due to the several shitty diode laser cutters that have recently proliferated around here (One or more of the involved parties will be posting about those shortly). As I’ve noted elsewhere, grbl is not my first choice, but has reached baseline required functionality in versions >1.1 and is unarguably convenient.

In particular, he went with one of the Arduino Nano based boards floating around ebay with titles like USB 3-Axis CNC TB6560 Driver Board Controller Converter GRBL Arduino Nano DB25, which are unfortunately both undocumented and (as it turns out) unsuitable. He asked me to help set it up, and this post serves to document and warn based on my findings.

It seems like it should be a great solution, but it will not work with the typical black control boxes that come with many little aluminum CNC machines or most other common 3 or 4 axis breakout boards. It has the (dead) URL www.getlofi.com/grbl-to-3axis on the silkscreen, and while getlofi.com does appear to be a valid page run by some hackers mostly into circuit bending, I couldn’t shake any mention, much less relevant documentation out of the page. What I did find with a continuity tester and some patience is the following unfortunate arrangement:

The problem is that the designer decided to tie DB25 pins 2,6,and 14 together to nano pin 11 (D8) with traces on the adapter. This renders it completely unusable with the 2-7 StepX/DirX/StepY/DirY/StepZ/DirZ pinout the vast majority of boards use, as StepX and StepZ are wired together. If I’m inferring which shitty blue TB6560 3-axis board it’s designed to work with correctly, 2, 6, and 14 are intended to be per-axis stepper enable pins, but that is not a particularly common configuration.

For contrast, I picked up one of the Arduino GRBL to DB25 CNC Shield Kits available from “Ron” on Tindie to throw in my parts bin for testing. It’s actually documented, supports the pin-out most parallel control boards I’ve encountered use (with the default grbl pinout no less), and has each individual pin broken out like a sane designer, so it should support any reasonable configuration. I tried my tindie board with the machine that was supposed to get the fail board, and it seems to work fine, so I’m going to encourage picking up one of those instead (unless we get ambitious and just cut our own DB25-Nano board).

Posted in Computers, DIY, Electronics, General, Objects, School | Leave a comment

3040Z CNC Router

Complete 3040Z CNC System

I’ve been fascinated with machine tools and mechatronics for well over a decade, and have been indulging that fascination with a series of little benchtop CNC machines since about 2008, especially since my collection of related degrees lend legitimacy to my desires. Because of my other lifestyle choices I’m more or less restricted to a machine which is small and well-behaved enough to operate in an apartment, is roughly man-portable, and fits in normal vehicles, at least for the time being. Possibly fortunately, this restricts me from going off the deep end and buying a small VMC, or even building out the heavier classes of benchtop machine.

Last year I started to feel like my old V1 Shapeoko (ca. 2012) was not really usable as a machine tool – it was a good toy, and I learned a ton of cool things from it, but it wasn’t stiff enough, reliable enough, or laid out in a way that made it practical to use for much of anything. After I had my Shapeoko on campus for a demo day, my adviser was inspired to buy himself a complete package Chinese 3040 CNC router, and I got a chance to play with that for a few days. I wasn’t terribly impressed with the electronics on it, but the frame proper impressed me enough that I decided I wanted one as an upgrade.

…So near the end of the spring semester, I ordered myself a bare 3040Z frame and a pile of parts to kit it out. The machine is built almost entirely from inexpensive Chinese components, purchased via a mixture of Aliexpress, eBay, and Amazon sellers (I’ve become fond of uxcell for small parts). I don’t have accurate or current price quotes for the whole thing because I bought as I went, and various parts are reused from previous projects. I suspect the total is in the neighborhood of $1200 – comparable to buying a slightly more powerful finished system without the enclosure or limit switches.

It was my intention to write this up in sections as I built it out, but kept opting to play with work on the machine instead of doing more writing – particularly since such a large part of the things I’m supposed to be doing with my time of late are also writing. I finally got the last of the major parts “done” to my satisfaction a few weeks ago, so it’s time to gather the pictures and notes from what should have been half a dozen topic posts and make a gigantic brain-dump.

Continue reading

Posted in Computers, DIY, Electronics, General, Objects | Tagged | 2 Comments

SC16 Notes

Posting pictures and thoughts from SC16, because someone else might learn from them.

I pushed my crappy cellphone pictures from the show into a google photos album, some of them even have comments about why they’re interesting attached. I’ll probably add a few pictures of the swag haul when I get to sorting through it.

Unlike previous years, we actually coordinated with UK’s Center for Computational Sciences folks, they added some displays and spent some time in our booth, and and are (supposedly) taking the lead on UK’s SC presence next year. They got to show off a poster and demo of their campus DMZ trick to the NSF program director who funded that work, and the new director got the SC experience of people and sights, so I think they’re convinced of the value in doing so.

The valuable things I learned are enumerated below:
1. A few years ago, there were concerns that system power density was becoming a limiting factor; the machines people wanted to build were larger than the allowable cable lengths for the preferred interconnects in order to accommodate the volume of cooling equipment required to make it run. Over the last few years, several players decided they could cheat the problem by switching to water cooling. This year, we’re seeing an awful lot of systems in the 0.25-0.33MW/Rack range, and predictions that the latest 3M phase change secret sauce will get them up to ~0.5MW/Rack once the power density of the parts gets there. The trick on that is fun, Novec 7100, which is apparently methoxy-nonafluorobutane – C4F9OCH3 – boils at about 61°C such that the phase change very quickly pulls heat away from hotspots, and can then be re-condensed in a big fucking water-loop radiator at top of rack. The rest of the scale issue is being handled by obscenely expensive electro-optical cables and such. Less clever, more throwing cash at the problem.

2. For next generation large systems, there are, to borrow a phrase form the person who initially gave me the heads up on this, “two swim-lanes.” Power8+Nvidia, connected inside the nodes with NVLink to get adequate memory bandwidth, and Intel Knights Landing manycore boxes. Either way, almost all the big stuff is wired together with Infiniband.

3. The annual “Hank was right” award (which, following tradition, comes with neither award nor recognition) was issued by Mellanox, who are now into “In-Network Computing” which looks an awful lot like the Aggregate Function Network work from the mid 90s. Basically, they’re doing MPI (&etc.) sync operations in the network adapters and switches to avoid both interrupts and latency.

4. To me, the most fascinating thing on the floor Emu Technology which is essentially the lone radically-different architecture being developed right now. The whole thing is basically a refinement of in-memory computing, built on the premise that it’s usually cheaper to move the thread state to the data being worked on than the data being worked on to the core. It almost looks like a late-career folly by a bunch of badass old architecture folk, but they’re actually getting things done, in no small part because their machine is specifically suited to perform vast numbers of small operations on even vaster bodies of sparse unstructured data, and they are obviously mostly bankrolled by “Our Benefactors” – anonymous well-heeled entities interested in radical ways to do exactly that are easily deduced but better to not name.

I want to be thinking about some of their problems, they have some really interesting toolchain work ahead, especially with regard to visualizing >16K-threads wandering around in memory in human-accessible ways to look for hotspots and other debugging tasks. Closing the memory layout feedback loop on these is the hard mode of a problem that’s hard but interesting on normal systems. This was even better because I later got to talk with Burton Smith for about half an hour about our respective musings on what they’re up to, mostly questions about their memory model, and talking to Burton for half an hour is more intellectually stimulating than about half the college courses I’ve taken.

5. Task-centric, graph-oriented programming models are getting their due. An awful lot of OCCA and Kokkos in the national labs, because they suits both swim-lanes, and, being based on fugly C++ template magic, are relatively vendor-neutral and straightforward for adapting existing codes. Folks are also taking Tensorflow seriously.

6. My expectations for Nvidia’s ARM64 ambitions are now essentially nill. I’m pretty sure I’m not supposed to share how or why I think this, but shit sounds doomed-via-mismanagement on that front.

7. Achronix has their own FPGAs. Part of the gimmick is that they have like 6 hardware DDR and Ethernet controllers wrapped in their fabric, but that’s not all that unusual. The interesting bit is that they might be willing to share/document enough of their cell structure that some of the permanently-back-burner compiling-HLLs-to-hardware tricks could happen.

The usual SC features also apply. An overview of the state of the field. The best serverporn money can buy. Adult trick-or-treating, vis-a-vis the various vendor swag. And we got to see all the regulars; Greg Kurtzer [Warewulf, CentOS, currently on Singularity], Burton Smith [Terra/Cray, MSR, etc. currently fascinated by languages for quantum computing], Don Becker [Beowulf, Ethernet Drivers, Scyld, Nvidia, currently building fun automotive electronics], Doug Eadline [“the media” of the HPC world] former group members like Tim and Randy, etc. Those visits are half the joy of continuing to go to SC.

Posted in Computers, General | Leave a comment

G|Bomb Push|Pump


I finally bought a G|Bomb Push|Pump setup after years of teasing myself about buying a proper hybrid distance deck. I selected it over the only other obvious contender, the Subsonic Century, mostly because as an engineer the G|Bomb design tickles me. Yes, it’s a $300 deck with another ~$100 of parts on it, but based on my first few rides, it’s totally worth it.
Continue reading

Posted in Entertainment, General, Objects | 2 Comments

Install Viavdo 2016.2 on ArchLinux (x86_64)

As of the date of this post, Xilinx Vivado 2016.2 works fine on Arch with minimal coaxing. Said coaxing is documented here in case it will be useful for others.

1. Install ncurses5-compat-libs from AUR, or the installer will hang during a later step. It appears to be required at runtime as well.

2. Mark the installer executable, eg. chmod +x Xilinx_Vivado_SDK_2016.2_0605_1_Lin64.bin, and run it with the confirm flag, ./Xilinx_Vivado_SDK_2016.2_0605_1_Lin64.bin --confirm

3. Hit Y at the “unpack” prompt, then go into the directory it creates at /tmp/selfgz[RANDOMSTRING], and edit xsetup to replace `uname -i` with `uname -m`, which is what they should have used in the first place.

4. Pre-create and permission the install path, a reasonable choice is the default /opt/Xilinx, which needs to be writable by the user doing the install (eg. chgrp users /opt/Xilinx, chmod g+w /opt/Xilinx)

5. Return to the terminal and hit Y to continue until the GUI installer runs.

6. Follow the GUI installer instructions, Feed the prompt your Xilinx credentials, Select Vivado HL WebPACK, etc.

7. The activation prompt at the end of the installation procedure is misleading, in the 2016.x versions if you simply quit without activating, the install automatically goes into WebPACK mode. If you don’t have/need any of the non-WebPACK features, activating the 30-day free trial of the nonfree version is asking for a headache when it expires.

8. It works. (and as a bonus convenience over the old toolchain, at least the Digilent Basys 3 boards use a normal FTDI usb-serial as their onboard programmer, so you don’t have to fight with drivers to program boards, that just works too.)

Posted in Computers, General, School | Tagged , | Leave a comment

Makergear M2 Upgrades


The lab Makergear M2’s heated bed power supply died a few weeks ago, so we decided it was time for a serious upgrade, and set out to equip it with basically the best parts currently on the market, as we’re convinced the M2’s mechanical construction is still about as good as it gets.

Our M2 was a very early M2 from early 2013, with a split-voltage 19v/12v power supply setup, was on its second RAMBo after the first one melted around some connectors (high-current 12V is not a good idea), and RAMBo #2 was already abused with an external transistor on a heatsink wired in to the bed heater. It was also on its second hotend after the first one failed catastrophically during a sensor-separation incident some years ago, and was running a mutant Makergear V3b w/ 12V cartridge custom ordered to suit our machine.

So, shopping list:

Plus a whole boatload of connectors. For reasons known only to themselves, Panucatt doesn’t (or at least didn’t at the time) actually document which kind(s) of connectors are on the board, or offer a wiring kit. Some measurement and educated dead-reckoning got us there, so for anyone else looking, it uses Molex KK connectors in 2.54mm with both keys and locking ramp, in 2,3,and 4 positions. Specifically:

  • Motor (4x): 4 position, Molex p/n:0022013047 (Digikey)
  • Endstops/Probes (4x): 3 position, Molex p/n:0022013037 (Digikey)
  • Thermistors (2x): 2 position, Molex p/n:0008500114 (Digikey)
  • Crimp pins for the above (>32x): Molex p/n:0008500114 (Digikey)
  • Fan (2x): Standard 100mil pinheader, 3 positions. We used generic 3pos Dupont connectors from a Chinese kit.

I’d suggest buying at least one extra housing in each size, and a substantial number of extra crimp pins (They’re like a dime each in quantity, we bought 50 and had plenty to spare). I got a bit of a chuckle that they use 2.54mm molex KKs with locks and keys for everything except the fans, while standard PC fans use 3p molex KKs with locks and keys, but we’re running a 24V system so PC fans would be inappropriate anyway. I personally bought myself an Engineer PA-09 crimp tool because this crossed the line on crimp terminal projects where I’m willing to do it by futzing around with pliers.


The parts for this little project could have bought us a second low end printer, but that wouldn’t have given us any interesting new capabilities (particularly since we already have a Wanhao i3), and the machine we ended up with is approximately as capable as any FDM printer on the market.

The Makergear specialty parts are lovely, and improved in various ways as compared to even the newer M2 the lab PI owns personally; the power supply is in a ridiculously nice metal case and has ferrule-tipped color coded wires, the new bed heater covers the aluminum spreader more fully, is constructed with a very nicely machined wire and thermistor bracket, and includes a semi-rigid split-loom to keep it clear. I built a couple slightly weird cables and did some aggressive polish and longevity tweaks, including putting ferrules on everything going into a screw terminal (I did it partially because I decided I wanted an excuse to own a ferrule crimper and assortment). Probably the weirdest bit is that all the fans have male 2pos Dupont connectors on them, and the always-on cooling fans around the head are connected via a Y cable that terminates in a 4-position female dupont wired +24,Gnd,+24,Gnd (Picture has the wires routed wrong).

All the cabling then retreated into the awesome mesh split-loom wire guides Makergear uses, and went on in more or less in the same configuration as the original cabling, including the weird little ball of wire at the back of the frame.


We also printed a number of parts for the upgrade, including a set of thingiverse user Neo Usagi’s E3D v6 40 mm Fan Duct and Extruder for MakerGear M2, which is an excellent design, though ours came out seriously over-tight and had to do a bit of grinding then perform the install with a vise – the dominant theory is that it was our fault for using 3 walls. Once fitted, it’s proven to be an excellent assembly with very good well-focused airflow and no tendency to bump into parts or the machine. The area around the head in this setup is extremely congested, and you must run the hot-end wires to the X+ side (the same side as the fan shroud mount) or they will hit the frame before the X endstop triggers, but once everything is situated it makes a nice package with no dangly bits. Even though it isn’t showing much noticeable difference in performance relative to late-model Makergear heads, I’m thoroughly impressed with the E3D hotend; the machining, the quality of the accessories in the kit, the efficacy of the heatbreak, the ease of assembly, everything is excellent, and in the mount we used, it only eats about 3mm of Z travel. They richly deserve their reputation.


As for the X5 Mini, two of the Makergear original mounting holes are close enough (though not perfectly aligned) to mount the board in a reasonable way with a pair of standard brass threaded standoffs, and a pair of those little barbed plastic motherboard standoffs trimmed to size to prevent tilting, all taken from the lab’s vast collection of PC assembly hardware. Leaving it exposed didn’t seem like a good plan, and we were seeing a slightly uncomfortable amount of warming on the motor drivers, so it needed a case and fan shroud. To that end we designed our own cover/enclosure/fan duct/bracket for the X5 Mini V3 and Viki2 (visible in the header picture – it has a 24V 40mm fan facing the Z motor blowing into the case, powered directly from an extra pair of PSU taps), a more detailed post about which will probably appear on profhankd’s thingiverse page shortly. We did all the printed components for the upgrade in our new favorite material, MakerGeeks’ “Raptor” PLA, incidentally in blue.

Software-wise, I’m satisfied but not enthused by Smoothieware. We’re now running this config.txt, which assumes 32x microstepping on all axes and produces very smooth, quiet motion with a minimum of idle heating. The major tuning efforts are just in the heater PIDs and on the Z movement, as the M2 design tends to make terrible noises if the Z movement is outside of a very narrow velocity window.

I wanted to like Smoothieware a lot more, and it is working well enough for the most part, but it is frankly kind of a garbage fire once you start looking at the code. It’s “modular,” but in an entirely ad-hoc way, so the parts don’t interact in entirely reasonable ways (Ex: AFIK it is currently incapable of setting up a “prevent cold extrusion” behavior, and would take pretty substantial changes to make it able to), with random parser fragments spread throughout the code. It also fails silently on unknown configuration keys, so I wasted the better part of a day on the extruder not responding after I wrote extruder.head.module_enable instead of extruder.head.enable because I misunderstood their half-updated documentation from when they hacked it to support multiple extruders. It looks and smells like a Reprappy hacker/hobbyst “move fast and break things” software, which is fine, but is so much so that I really don’t have high hopes for it maturing into something survivable without a complete redesign. This does make me feel better about sticking with LinuxCNC for my latest personal CNC project (Which I will eventually get to writing up and posting…).

Is ridiculously quieter than even the 24V stock M2, prints nicely at 150mm/s in PLA, heats up almost as fast as you can get a file loaded up and sliced, and can do so more or less independent and minimally attended. From a working current-gen 24v M2, none of the changes we made are particularly substantial upgrades, but from it’s state before the improvement is spectacular.

Posted in DIY, Electronics, General, Objects, School | 4 Comments

Macintosh LC Recap

I’ve done some invasive repairs on the Macintosh LC from my small fleet of vintage computers. I figure it’s worth writing up because there is a lack of detailed information about this kind of work on the ‘net.
Continue reading

Posted in Computers, DIY, Electronics, General | 7 Comments

Apparently a WordPress update caused some subtle breakage here a while back. The site has been spewing, among other things, a bunch of “&raquo” escapes in places that end up encoded as XML (thus breaking, among other things, RSS feeds). I’m hoping just swapping in “&#187” in a couple files that I’m not entirely sure if are configs or source because PHP and WP are both terrible will be a fairly permanent fix. It looks like it might be related to the javascript-reliant emoji support that appeared in 4.2?

Also, if you have an RSS thing pointed at a non-https or www-prefix URL here, you’re generating an awful lot of redirects and might want to adjust your subscription.

Every time I look into WordPress’ ugly accreted heart I wish for an alternative that does what I want from a CMS with less awful – if I didn’t want self-hosted comments this whole thing would have been replaced with static HTML years ago. More generally, every time I look at how the web actually works, it makes me consider primitivism as a legitimate and appealing lifestyle choice.

Posted on by pappp | 1 Comment