Category Archives: Computers


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 on the silkscreen, and while 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 | 4 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

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

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). … Continue reading

Posted on by pappp | 1 Comment

TP-Link Archer C7 with OpenWRT

I bought myself a TP-Link Archer C7 because the 2.4Ghz congestion in my apartment has become so terrible that my good old TP-Link WR1043ND (no 5Ghz radios) is no longer adequate, and the C7 was very well spoken of among reasonably-priced 802.11ac routers. It also has some nice perks like two on-board USB ports, so I can use it as a print server (with p910nd) and have USB storage for logs (vnstat & co.) and such attached without a separate hub. I wasn’t feeling quite motivated enough to buy and set up one of the NUC-like cheap SFF Intel boxes as a router like Ars Technica and Jeff Atwood have recently noted is an increasingly good plan, based largely on the dearth of ac WiFi cards that work reliably in host mode.

Some notes that may be of use to others, particularly about firmware replacement on recent models and throughput:
Continue reading

Posted in Computers, Electronics, General, Objects | 14 Comments

Breaking In to your Own Devices

I gave an informal talk for the IEEE student branch about breaking in to your own devices this evening. I did the low-postable-content notes with live examples and links thing, but at least one person wanted to watch the video links, so here are the notes. There is something delightful about giving talks that require legal disclaimers. I don’t think there is anything in here that will get me in trouble…

Continue reading

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