Hack On Self: How’d My Day Go?

Humans are well overdue for a technological revolution – not a profit-driven one like we’re having now, a human-centric one. Sci-fi is wonderful for having your brain run wild. Over the last century, we’ve had writers try and imagine what world would’ve had looked like if a new technology were to address different aspects of human condition, or, work to undercut us all in yet unseen ways, for a change.

Quite a few leading HaD projects have clear sci-fi inspiration, too, and same goes for a large number of Hackaday Prize entries. Over here, we live for fantasy made reality through skill, wit, and insights.

Ever got a sci-fi-esque dream that you’ve tried to implement with modern-day tech, only to fail because something fundamental was missing about how your phone/laptop/smartwatch functions? You’re not alone here, for sure – this describes a large chunk of my tech journey. In real life, you work with audience-tailored devices, the few fun usecases pre-cooked into the hardware-firmware blob.

Still, how much can you build on top of a consumer device? Alternative OSes that liberate you from the trend of enshittification, for instance, that one’s brilliant and a lifeline for preserving one’s sanity. Alternative platforms that bring a reprieve from a modern combative and ad-filled social media environment, sure. Still, feels limited

How about diary keeping? Personal diaries are really rad, aren’t they? Surely, that one’s a low-hanging fruit? Continue reading “Hack On Self: How’d My Day Go?”

Hack On Self: Headphone Friend

In the last two articles, I talked about two systems relying on audio notifications. The first one is the Alt-Tab annihilator system – a system making use of my window monitoring code to angrily beep at me when I’m getting distracted. The other is the crash prevention system – a small script that helps me avoid an annoying failure mode where I run out of energy before getting myself comfortable for it.

I’ve been appreciating these two systems quite a bit – not only are they at my fingertips, they’re also pretty effective. To this day, I currently use these two systems to help me stay focused as I hack on my own projects or write articles, and they are definitely a mainstay in my self-hacking arsenal.

There is a particular thing I’ve noticed – audio notifications help a fair bit in a way that phone or desktop notifications never would, and, now I have a framework to produce them – in a way that calls for a purpose-tailored device. It’s just wireless headphones, Pi-powered, connected through WiFi, and a library to produce sounds on my computer, but it turns out I can squeeze out a lot out of this simple combination.

Here’s a pocketable device I’ve developed, using off-the-shelf hardware – an audio receiver/transmitter with extra IO, paired to my laptop. And, here’s how I make use of this device’s capabilities to the fullest.

Audio Output

In the “producing sound out of a Pi” article, I’ve mentioned USB-C 3.5mm soundcards. You can use them with a USB-C host port, and you don’t even need any sort of resistors for that – the soundcard doesn’t try and detect state of the CC pin, and why would it, anyway? Get VBUS, GND, D+, and D-, and you got yourself an audio card with high quality output.

Continue reading “Hack On Self: Headphone Friend”

Hack On Self: The Un-Crash Alarm

Ever get home, tired after work, sit down on a couch, and spend an hour or two sitting down without even managing to change into your home clothes? It’s a seriously unpleasant in-between state – almost comfortable, but you know you’re not really at rest, likely hungry, and even your phone battery is likely about to die. This kind of tiredness can get self-reinforcing real quick – especially if you’re too tired to cook food, or you’re stuck in an uncomfortable position. It’s like the inverse of the marshmallow test – instead of a desire, you’re dealing with lack thereof.

I’ve been dealing with this problem a lot within the last two years’ time. Day to day, I could lose hours to this kind of tiredness. It gets worse when I’m sick, and, it’s gotten worse on average after a few bouts of COVID. It’s not just tiredness, either – distractability and tiredness go hand in hand, and they play into each other, too.

My conclusion, so far, was pretty simple. When I’m tired, delayed but proper rest is way better than “resting” in a half-alert state, even if that takes effort I might not have yet. So, it’s important that I can get up, even if I’m already in a “crashed” position. Sure, I could use tricks like “do not sit down until I’m ready to rest”, but that only works sometimes – other times, the tiredness is too much to handle.

Audio files and sound playback library in hand, negative reinforcement methods fresh in my mind, I went and cooked together a very simple solution. Continue reading “Hack On Self: The Un-Crash Alarm”

USB-C For Hackers: Reusing Cables

Your project needs a cable, and since USB-C cables are omnipresent now, it’s only natural to want to reuse them for your evil schemes. Ever seen USB 3.0 cables used for PCIe link carrying duty? It’s because USB 3.0 cables are built to a reasonably high standard, both sockets and cables are easy to find, and they’re cheap. Well, USB-C cables beat USB 3.0 cables by all possible metrics.

Let’s go through USB-C cable reuse in great detail, and see just what exactly you get when you buy either a gas station C-C USB 2.0 cable, or, the fanciest all-features-supported 240 W Thunderbolt cable that money can buy. Looking for a cable to cut, or something to pass a seriously high-speed link? You’re reading the right article.

The Omnipresent Cables

USB-A to USB-C cables are the least interesting. They’re equivalent to a microUSB to USB-A cable, except there’s a resistor on the USB-C plug, connected from VBUS to one of the CC pins. That’s it. The cable contains four conductors, there’s really not much new. Save these cables for all the devices still built without the 5.1 kΩ resistors.

Now, a USB-C to USB-C cable – let’s say, 60 W max, the default USB-C cable capability. If your cable says anything less than 60 W, say, “2 A” or “15 W”, that’s a lie – it can handle 60 W no problem, all USB-C to C cables can do 60 W. This cable is also cool – for one, it has five conductors; GND, VBUS, D+, D-, and CC. Two of them (GND and VBUS) are guaranteed to be thick enough to carry 3 A without much voltage drop if any, too!

Continue reading “USB-C For Hackers: Reusing Cables”

Ubiquitous Successful Bus: Version 3

USB 2 is the USB we all know and love. But about ten years ago, USB got an upgrade: USB 3.0. And it’s a lot faster. It started off ten times the speed of USB 2, with 5 Gbps, and later got 20 Gbps and 40 Gbps revisions. How does that work, and how do you hack on it? Well, for a start, it’s very different from USB 2, and the hacking differs in many important ways.

In fact, USB 3 is an entirely separate interface from USB 2, and it does not depend on USB 2 in any way whatsoever – some people think that USB 3 negotiation happens through USB 2, but that’s a complete myth. USB 2 and USB 3 are electrically, physically, and logically distinct interfaces. Except for the fact that USB 3 is backwards compatible with USB 2, they are simply entirely different.

This also means that every USB-A port with USB 3 capabilities (typically blue, but not always) carries two interfaces; indeed, if you want, you can split a typical USB 3 port into a USB 3-only USB-A port and a USB 2-only USB-A port. USB 3-only ports are not legal per USB 3 standard, you’re expected to keep USB 2 there, but only for user convenience; you can split it with a hub and get, like, three extra USB 2 branches for your own use. Even if it’s forbidden, it works flawlessly – it’s what I’m currently using to connect my mouse to my laptop as I’m typing this!

Not to say that USB 3 is all easy to work with – there’s a fair bit of complexity.

Continue reading “Ubiquitous Successful Bus: Version 3”

Ubiquitous Successful Bus: Hacking USB 2 Hubs

We’ve been recently looking into USB 2.0 – the ubiquitous point-to-point communications standard. USB 2 is completely different from USB 3, the blue-connector next-generation USB standard. For instance, USB 2 is a full-duplex pseudo-differential bus, and it’s not AC-coupled. This makes USB2 notoriously difficult to galvanically isolate, as opposed to USB 3.  On the other hand, USB 2 is a lot easier to incorporate into your projects. And perhaps the best way to do so is to implement a USB hub.

USB 2 hubs are, by now, omnipresent. it doesn’t cost much to add to your board, and you truly have tons of options. The standard option is 4-port hubs – one uplink port to your host, four downlink ports to your devices. If you only have two or three devices, you might be tempted to look for a hub IC with a lower amount of ports, but it’s not worth bothering – just use a 4-port chip, and stock up on them.

What about 7-port chips? You will see those every now and then – but take a close look at the datasheet. Some of them will be two 4-port chips inside a single package, with four of the ports bottlenecked compared to the three other ports – watch out! Desktop 7-port hubs are basically guaranteed to use two 4-port ICs, too, so, again, watch out for bottlenecks. lsusb -t will help you determine the hub’s structure in case you don’t want to crack its case open, thankfully.

Recommendations? I use SL2.1 chips – they’re available in an SO16 package, very unproblematic, to-the-point pinout and easily hand-solderable. CH334 is a close contender, but watch out because there are different variants of this chip that differ by both package and pinout, so if you’re buying a chip with a certain letter, you will want to stick to it. Not just that, be careful – different variants run out at different rates, so if you lock yourself into a CH334 variant, consider stocking up on it. Continue reading “Ubiquitous Successful Bus: Hacking USB 2 Hubs”

Hacker Tactic: Building Blocks

The software and hardware worlds have overlaps, and it’s worth looking over the fence to see if there’s anything you missed. You might’ve already noticed that we hackers use PCB modules and devboards in the same way that programmers might use libraries and frameworks. You’ll find way more parallels if you think about it.

Building blocks are about belonging to a community, being able to draw from it. Sometimes it’s a community of one, but you might just find that building blocks help you reach other people easily, touching upon common elements between projects that both you and some other hacker might be planning out. With every building block, you make your or someone else’s next project quicker, and maybe you make it possible.

Sometimes, however, building blocks are about being lazy.

Continue reading “Hacker Tactic: Building Blocks”