LTSpice Tips And A Long Tutorial

We always enjoy videos from [FesZ], so when we saw his latest about tips and tricks for LTSpice, we decided to put the 20 minutes in to watch it. But we noticed in the text that he has an entire series of video tutorials about LTSpice and that this is actually episode 30. So there’s plenty to watch.

Like any tips and tricks video, you might know some of them and you may not care about some of them — for example, the first one talks about setting the colors which is a highly personal preference.  But it is a good bet you’ll find something to like in the video.

Continue reading “LTSpice Tips And A Long Tutorial”

LED Heart Keeps Tabs On Your RuneScape Character

The MMORPG RuneScape holds a special place in the hearts of those who played it in the early 2000s. Sure it might seem exceptionally quaint by modern standards, but at the time it was groundbreaking stuff. Plus you could play it for free, which certainly helped get people onboard. While there’s a more modern build available, many who played the game from the early days prefer to stick with what they know, and continue to run a version of the game that has now become known as Old School RuneScape.

[Austin Blake] is one of those early adopters, and the work he put into this LED health indicator should tell you all you need to know about how dedicated he is to the classic game. The 3D printed heart holds an incredible 312 NeoPixel LEDs, which are controlled by a 5 volt compatible Arduino Nano Every located on the back side.  Both the color and “fill level” of the heart will change in real-time to correspond to the health of the player character.

Building the light itself was pretty straightforward, but getting the health value from the game was another story. As [Austin] explains in the video, his first attempt involved using Python and some image recognition routines to literally read the indicator off of the screen. The idea worked, and is frankly a fascinating hack worth keeping in mind on its own, but unfortunately it was too slow to provide the real-time feedback he was looking for.

Eventually he turned his attention to RuneLite, which is an open source client for Old School RuneScape. Thanks to its open source nature he could have hacked a routine to read the current health value and send it off to the Arduino, but thanks to a mature plug-in system, he didn’t have to.

The game’s API let him create a simple and reliable way of getting the data out of the game, similar to what we see in the flight simulator community for driving physical gauges and displays. RuneLite features a repository of community-developed plugins, and [Austin] says that he’d be happy to submit his for inclusion if others are interested in building similar indicators — a perfect match for this motion-sensing RuneScape axe.

Continue reading “LED Heart Keeps Tabs On Your RuneScape Character”

Panelize PCBs Graphically With Hm-panelizer

When you’re working with PCBs and making single units to knock out in those Chinese fabs, going from layout to manufacturable Gerber files is just a few button presses, no matter what PCB layout tool you prefer. But, once you get into producing sets of PCBs that form a larger system, or are making multiple copies for efficient manufacturing, then you’re not going to get far without delving into the art of PCB panelization. We’ve seen a few options over the years, and here’s yet another one that’s looking quite promising —  hm-panelizer by [halfmarble] is a cross platform Python GUI application, which leverages Kivy, so it should run on pretty well on most major platforms without too much hassle. The tool is early in development, so is restricted to handling only straight PCB edges, with horizontal mouse-bites for now, but we’re sure it will quickly grow more general purpose capabilities given time and support.

In an ideal world, open source tools like KiCAD would have a built-in panelizer, but for now we can dream and hm-panelizer might just be good enough for some people. For more choices on panelizing, checkout our guide to making it easy, and just to muddy the waters here’s another way to do it.

Linux And C In The Browser

There was a time when trying to learn to write low-level driver or kernel code was hard. You really needed two machines: one to work with, and one to screw up over and over again until you got it right. These days you can just spin up a virtual machine and roll it back every time you totally screw up. Much easier! We don’t think it is all that practical, but [nsommer] has an interesting post about loading up a C compiler and compiling Linux for a virtual machine. What’s different? Oh, the virtual machine is in your browser.

The v86 CPU emulator runs in the browser and looks like a Pentium III computer with the usual hardware. You might think it is slow and it certainly isn’t going to be fast as a rocket, but it does translate machine code into WebAssembly, so performance isn’t as bad as you might think.

The post goes into detail about how to build and create a simple machine web page that hosts v86. Once you cross-compile the kernel you can boot the machine up virtually. The other interesting part is the addition of tcc which is a pretty capable C compiler and much smaller and faster than the very traditional gcc.

The tcc build is tricky because the normal build process compiles the compiler and then uses the same compiler to build the default libraries. When cross-compiling, this doesn’t work well because the library you want for the host compile is different from the library you want to target for the second pass. You’ll see how to work around that in the post. The post continues to show how to do remote debugging and even gets QEMU into the mix. Debugging inside v86 doesn’t seem to work so far. There are more posts on this topic promised.

Honestly, this is one of those things like teaching a chicken to play checkers. It can be done, there’s little practical value, but it is still something to see. On the other hand, if you spend the weekend working through this, your next Linux porting project ought to seem easy by comparison.

Amazing what you can pull off with WebAssembly. If you need a quick introduction, check this one out from [Ben James].

PSP Turned Robot Remote With Custom Software

There’s no question that Sony’s PlayStation Portable (PSP) was an impressive piece of hardware when it was released in 2004, but for all its technical wizardry, it wasn’t able to shake Nintendo’s vice-like grip on the handheld market. Perhaps that explains why we still see so many nostalgia-fueled hacks for Nintendo’s Game Boy and Dual Screen (DS) systems, while PSP hacks tend to be few and far between.

But looking at projects like this one that turn the PSP into a capable robot controller (video, embedded below) we can’t help but wonder if the community has been missing out. Thanks to an open source software development kit for the system, [iketsj] was able to write a WiFi controller program that can be run on any PSP with a homebrew-compatible firmware.

The other side of the equation is a simple robot powered by an ESP8266. To take control of the bot, the user connects their handheld to the WiFi network being offered by the MCU and fires up the controller application from the main menu. It’s all very slick, and the fact that you don’t need to make any modifications to the PSP’s hardware is a huge plus. From the video after the break we get the impression that the remote software is pretty simplistic in its current form, but we imagine the only really limitations are how good you are at writing C code for what by today’s standards would be considered a fairly resource constrained system. We’d love to see that widescreen display lit up and showing live first-person video from the bot’s perspective.

Many of the PSP hack’s we’ve seen over the years have been about repurposing the hardware, or in some cases, replacing the system’s internals with something raspberry flavored. Those projects have certainly been interesting in their own ways, but we really like the idea of being able to push a largely stock system into a new role just by writing some custom code for it.

Continue reading “PSP Turned Robot Remote With Custom Software”

Lotus 123 For Linux Is Like A Digital Treasure Hunt

Ever hear of Lotus 123? It is an old spreadsheet program that dominated the early PC market, taking the crown from incumbent Visicalc. [Tavis Ormandy] has managed to get the old software running natively under Linux — quite a feat for software that is around 40 years old and was meant for a different operating system. You can see the results in glorious green text on a black screen in the video below.

If you are a recent convert to Linux, you might not remember what a pain it was “in the old days” to install software. But in this case, it is even worse since the software isn’t even for Linux. The whole adventure started with [Tavis] wanting to find the API kit used to add plugins to Lotus. In theory, you could use it to add modern features to the venerable spreadsheet program.

The $395 software development kit wasn’t very common and there was also a Unix version of Lotus 123, but no one seemed to have a copy of that. [Tavis] eventually found someone who ran a circa-1990 BBS and had the data on tape. Turned out there was a hot copy of the SDK that he was able to use. But he noticed something else in the BBS’s list of files: the long-lost Unix version of Lotus!

An investigation found the installer used TD0 files which took some research. Luckily, a utility exists that can convert these to raw disk images. Inside was a very large object file. Apparently, in the days without dynamic loading, that object would be linked with plug in modules to install them.

The object file had all of its debugging information intact which shed a lot of light on the program’s internal operations. The old executables used COFF format but it is possible to relink it to an ELF file. Of course, it isn’t just that easy. [Tavis] wrote a small program to remove the old-style Unix system calls so they could be rerouted to Linux system calls. Some calls just pass through, but others need some translation due to differences in things like structure layout, sizes, and alignment.

In the end, it all worked but didn’t have a valid license. However, [Tavis] felt like since he did have a license and the software is abandoned, he was within his rights to crack the license check.

We are well-known abusers of spreadsheets around here. Of course, we aren’t the only ones.

Continue reading Lotus 123 For Linux Is Like A Digital Treasure Hunt”

Hack Another ELF On The Stack

[dropbear] recently found herself in a pickle. Dumping some data out of an Android app at a specific point for reverse engineering purposes. While it worked great in the simulator, it was painfully slow on hardware via lldb. The solution was to write a patch and apply it to the ELF file.

Writing the AArch64 assembly to dump the buffer is relatively trivial, but adding it to the existing ELF and repackaging it into a new APK leads to strange errors. The relative offsets into .rodata are now all wrong. For those who don’t routinely interface with the format of ELF files, we have a fantastic resource to take you into the dark depths. But the quick summary version is that sections contain various resources, and you find parts of those resources by relative offsets. The program header describes what type of resources each section contains.

[dropbear] found a NOTE section that just contained some metadata. She created a new section at the end of the file for her custom assembly and modified the header to declare the NOTE section as a LOAD section that pointed at her new section, which would get mapped into memory. All that was left to do was tweak the assembly in the actual code to jump to her new code that dumps. The BSS section was extended by a few bytes so that her program could store its state there.

It’s an impressive technique, and her program for modifying the program header is on her website under a BSD-3 license.