-
2022 Advent of Code
2022-12-31
I'm having a go at the 2022 Advent of Code. Here's how I solved the problems - the ones I could be bothered solving anyway.
-
Cyber FastTrack 2020 Forensics RH01 challenge
2020-03-28
This is the RH01 challenge from Cyber FastTrack Spring 2020.
-
Cyber FastTrack 2020 Forensics HF05 challenge
2020-03-27
This is challenge HF05 from the Cyber FastTrack Spring 2020 challenges.
-
Cyber FastTrack 2020 Forensics FE01 challenge
2020-03-27
This is a challenge from Cyber FastTrack Spring 2020, using the same image as FH05.
-
Serial LIRC devices on recent Ubuntu releases
2018-11-28
I tried to get a "homebrew" infrared receiver attached to the DCD line of a serial port working on Ubuntu Bionic. It seems that things have changed since Ubuntu 12.04, when I last had it working.
-
Sub 50 cent microcontrollers
2018-10-24
$1 microcontrollers, pfft. What useful ones are around for under 50 cents?
-
Schematic for the "Bustodephon" brushed motor electronic speed controller (ESC)
2018-09-13
I tried drawing the schematic for the common "Bustophedon" electronic speed controllers (ESC) for brushed motors.
-
The FlySky iBus protocol
2017-10-22
This is the FlySky iBus protocol that I've gleaned from a blog post and a single library.
-
Build a Jekyll blog with Travis CI without granting write access
2017-10-08
With the demise of Openshift Online and its free tier, I was looking for somewhere else to host my blog. Even though it's a Jekyll blog, it does some image resizing, so I can't use Github's native builder. I should be able to use Travis CI though, then push them to another Github repository for Pages hosting.
-
Check that your flash memory isn't fake
2015-07-11
Here's how I've checked that my flash memory (USB stick, SD card etc) isn't fake. The idea is to use a cipher to produce a psuedorandom stream, write its output to the flash memory, then genenrate the stream again comparing it to the card.
-
Save space used by an Ubuntu VM by using the live CD, the slightly easier way
2015-04-22
Yesterday I worked out how to use the Ubuntu live CD to save space on Ubuntu VMs. It turns out you don't need to change
initrd.lz
. -
Save space used by an Ubuntu VM by using the live CD
2015-04-21
I like to use VMs when doing things which might put stuff all over the filesystem or needs root access to install. But at a few gigabytes each they quickly take up space. I managed to use the live CD image as a base, which is compressed and can be shared among virtual machines.
-
Back up the flash of a Huawei Mediapad 7 Lite
2014-08-25
I recently purchased a Huawei Mediapad 7 Lite 4GB very cheaply on clearance. It’s based on a Rockchip RK2918, which there are tools for to read and write the flash directly. Before I start trying to hack it, I should get a backup of what’s already on it.
-
Running a Z-machine on an AVR
2014-04-06
Can you make a Z-machine console - a virtual machine for text adventure games - complete with screen and keyboard on an AVR?
-
OpenWRT on a Nokia N800
2014-02-23
This is work in progress, so expect it to be added to/abandoned (probably the latter) at any time.
-
Science Alive noise maker
2013-08-12
For Science Alive, I made a simple circuit that made noises in response to light changes. Being something which makes noise it was popular with the kids. It's based on circuits described in Nicolas Collins' "Handmade Electronic Music". A few people asked me a circuit so I'll describe it here.
-
Synchronize a Linux box to a digital TV signal
2013-06-14
I remembered seeing some command which could synchronize the system clock to the digital TV (DVB) signal. This is ideal for a MythTV box which isn't connected to the internet. It's
dvbdate
. One problem: it ignores the system time zone. It can use theTZ
environment variable, whose current value can be obtained using the datecommand
: -
Implementing the virtual guestbook
2013-06-06
So how about implementing the virtual message board? I'll try it in a virtual machine first.
-
The Virtual Guestbook
2013-05-20
This is work in progress, so there's plenty of gaps!
-
Frickin' lasers
2012-12-06
I purchased a quantity of cheap laser modules for a project. They were advertised as 3V modules, but they all have 39Ω resistors in series for current limiting. When connected to two AAA batteries, I measured 15mA and a forward voltage of 2.15V. This makes the resistor value 0.85V/15mA=57Ω though.
-
Code to produce video signals on the STM32L Discovery
2012-11-04
I've finally coded the program that produces a video signal. There weren't too many surprises.
-
Video signal output circuitry
2012-10-28
I'll need a simple circuit to mix my video signals together. The Arduino TV Out library shows how to do this, but that works with 5V IOs, but the STM32L Discovery (and all ARM chips AFAIK) uses 3.3V.
-
DMA on the STM32L Discovery
2012-10-23
There's one more part to my video generator - the picture data, which I want to transfer to the SPI port using DMA. This actually looks fairly straightforward, these are the available registers:
- Picture data using SPI 2012-10-21
I plan to use SPI to send the picture data for my video generator.
- More on the vsync interrupts 2012-10-20
I had a thought after my previous disheartening attempt to get the vsync working: since they might have stuffed up timer 11 in ChibiOS, I might change to timer 4. One massive advantage is that timers 2, 3 and 4 have 4 compare registers, instead of one! This means I can use one to turn off the vsync pulse, and one to trigger the DMA interrupt and adjust the sync timings on the next line. Changing everything to use TIM4 was fairly straightforward, the only tricky part being changing the single compare register to use compare register 4, and enabling APB1 instead of APB2 since that's where timer 4 is. (I originally used register 1, but that is connected to PORTB6 which is attached to the blue LED.)
- Starting on the vsync interrupts 2012-10-18
Now it's time to adjust the sync signals to get vsync working, so I need an interrupt when the signal goes low so I can adjust the sync pulse on the next cycle. I have no idea how to start the interrupts.
- Coding PWM on the STM32L 2012-10-16
So how about coding up the PWM to produce the hsync signal from my previous post? Here's my first attempt:
- More timing video signals on the STM32L Discovery 2012-10-10
I've looked how ChibiOS does its timing, and worked out that it's unsuitable for timing video signals. Now I'll look at the using the timers directly.
- Timing video signals from the STM32L Discovery 2012-10-07
In my last post, I suggested using ChibiOS to produce video signals from the STM32L Discovery.
- ChibiOS on the STM32L Discovery 2012-10-01
I previously used the libraries provided by ST to do something on the STM32L Discovery, now I've made a short demo of using ChibiOS. Hopefully by using an OS to write code, I don't have to mess around with timers myself to process events periodically, which I always found time consuming on the AVR. Here's what I did:
- Using ST's libraries with the STM32L Discovery 2012-09-27
Now that I've got the LED to light by accessing the registers directly, I'll try again this time using ST's libraries. ST calls this the "standard peripheral library", and can be downloaded from the CPU page.
- Blinky on the STM32L Discovery 2012-09-24
My program seems to have locked-in syndrome, so now I'll see if I can get it to flash an LED.
- How the STM32L Discovery demo works 2012-09-20
In my previous post, I got a basic program running on a STM32L Discovery board. Now I hope to work out what the program works.
- Getting started with an STM32L Discovery with Linux and GCC 2012-09-18 I've got the "hello world" working on my STM32L Discovery board that I got about 8 months ago. It's not even the canonical blinking light, but it counts up and you only know that it works by using a debugger! Another site gave me the basic idea, but I needed a few changes to get it working.
- Whiteboard bot's first drawing 2012-08-14 Here's the first drawing from my whiteboard robot! It doesn't draw anything by itself because I must have messed up the maths, but I was able to operate it manually and draw some circles. The lines are wonky because the wall the board was attached to was shaking. I didn't get the pen to move in and out, to draw separate lines.
- Whiteboard robot number crunching 2012-07-03
I'm thinking of building a robot that suspends a whiteboard marker from two strings, and draws on a whiteboard. There would be two motors that can change the length of the strings.
- Fixing the foam pads on a trackball 2012-03-26
Problem: the trackball scratches my graphics tablet!
- Drive an Arduino from a mobile phone wirelessly 2012-03-17
A while ago I had the idea of using cheap bluetooth modules to operate an Arduino from a mobile phone, thus saving the expense of an IOIO board (or similar). I purchased the module, but it didn't arrive during a period of unemployment and I never got around to doing anything with it.
- A very cheap AVR dev board 2012-03-11
I bought one of these boards for about $4 on eBay. It's based on the USB ASP - a cheap AVR programming board. I remember seeing a post on Hack A Day a while ago about using them as a general purpose dev board, with 5 lines broken out to the black pin header. By removing a link on the bottom of the board, you can get 3.3V from a regulator.
- Add a caption to a JPEG image without reencoding 2012-01-06
I was looking for a way to add captions to JPEG images without re-encoding them. It turns out there's a patch to jpegtran that overlay one JPEG image over another one, without re-encoding either. Here's how I built it:
- Run a V-USB demo on an AVR stick (Easylogger) 2011-12-17
This article describes how to run one of the V-USB demos on an AVR stick (which is an Easylogger clone).
- How an electric kettle knows when the water is boiling 2011-12-11
My cheap kettle leaked. You couldn't press the lever down when it wasn't on the base, so I hoped to find an electromagnet which held the switch on when it had power. I didn't find one (I only managed to salvage two neon lights from it), but I found out how kettles switch off when they're boiling.
- Laser printer mirror hacking 2011-11-21
I pulled the mirror out of a laster pinter, and I had a go making it work.
- Repartitioning a computer with four primary partitions 2010-07-04
How I repartitioned a hard disk that has all four primary partitions allocated.
- Find the progress of a command 2010-07-04
If you're running some command that takes a while, perhaps compressing a large file, you often want to know how far along it is. This is when the
/proc/_pid_/io
file is useful.- Download the packages for an offline Ubuntu upgrade 2010-06-12
Well, not really offline since you'll still have to download some files, but not all of the packages. Use this for computers with limited internet quota. I'm sure this could be done in a single script with some awk-fu.
- Changing 8 pins at a time with the Arduino environment 2010-05-22
A quick demo of how to change 8 pins at a time with an Arduino, using some AVR C code:
- Inside a fake Wii remote and nunchuck 2010-04-17
A while ago I bought a fake Wii remote and nunchuck to play with (I don't actually own a Wii). My tri-wing screwdriver arrived a few days ago, and here's what their insides look like (you can contrast with the real thing) (click on a picture for higher resolution, and more pics):
- A 10MHz USB oscilloscope for under $50? 2010-04-15
Oscilloscopes are expensive. USB ones are too. I reckon one can be built for under $50.
- VGA from an Arduino? 2010-04-10
Well really, I doubt you could use the Arduino IDE to make it...
- Joule thief 2010-03-28
I heard about a simple circuit the other day that can light an LED of as little as 0.3V or even a lemon. This page analyzes it in loads of detail, and suggests adding a capacitor and diode to improve the circuit's efficiency considerably.
- Printing from an old fax machine 2010-03-15
I use my printer about twice a year. I went to use it the other day. The ink was dry. What type of printer will work when I want?
- Microcontroller TTL to RS232 communication 2010-03-12
I purchased a USB to serial converter, popped it open and observed the two chips inside: a PL-2303HX USB to Serial Bridge Controller for a USB to TTL serial converter, and a ADM211 for converting those TTL levels to RS232 levels. Which is fine if you wanted to actually talk RS232.
- Picture data using SPI 2012-10-21