Replace boring POST beep with Imperial March or Morrowind theme!
- 2 boards with integrated speaker, which play selected tune on boot
- 4 modes (controlled by 2 switches):
- (0b00) - passthrough, POST beep is played as-is
- (0b01) - Star Wars Imperial March
- (0b10) - Morrowind theme (aka Nerevar Rising / Call of Magic)
- (0b11) - Russian anthem
- Adjustable volume (blue potentiometer)
To detect POST signal AVR microcontroller reads motherboard speaker ground pin -SP
.
I've created 2 devices in different form factors.
Both are based on ATtiny85
microcontroller
(simply because I had these lying around, you may use a different one).
Schematic for both boards is mostly the same
(mini-ITX board doesn't have SW3
switch):
Large board which plugs directly into PCI port.
Has an external panel, which exposes 2 toggle switches (SW1
and SW2
) and a potentiometer shaft (P1
).
Note that when installed, back panel may be flipped. To select passthrough/tune
correctly, orient the panel so that volume shaft is the left side.
This board also has a dedicated dip switch (SW3
) which disables POST trigger.
When this dip switch is ON, avr doesn't read motherboard speaker pin (-SP
).
Instead, it plays selected tune once after being powered.
This means the tune may be played after waking from sleep mode.
This dip switch is ignored when passthrough is selected.
Tiny board, suitable for mini-ITX builds where space is at premium.
Tune/passthrough is selected with 2 on-board dip switches (SW1
and SW2
).
Unlike PCI build, there is no dip switch to disable POST trigger (SW3
).
The board must be manually connected to a 5v power source with wires.
Pin order (top-down, board is positioned so that pins are on the left side):
+5V
- power source, you can use speaker+ pin on the motherboard-SP
- trigger pin, connects to speaker- pin on the motherboardgnd
- you can use ground pin from any free port on the motherboard
Known issue: when volume is set above ~90%, the board may start playing satanic screeches or otherwise behave strangely.
Install required packages:
avr-gcc
avr-libc
avrdude
Run make
to build .hex
file.
You can use any AVR ISP programmer supported by avrdude
.
I am using Arduino as ISP,
to use other programmer modify PROGR
variable in Makefile
.
Connect the programmer and run make flash PORT=<usbport>
to upload .hex
file to AVR.
You may need superuser privileges,
for example when using Windows Subsystem for Linux:
sudo make flash PORT=/dev/ttyS3
- rev. 2 (current)
- rev. 1 - first 2 boards, see corresponding branch