Remember the old times, when all computer were equipped with a tiny speaker attached directly to the motherboard? I even remember those speakers being used by video games to play musics and sounds!

During the dark times of debugging computer problems, those speakers also served another purpose: it was often the only way your motherboard had to communicate early boot problems, when even a VGA display was unable to work. Most recent boards don’t have those speaker any more, but sometimes come with a LED fulfilling the same role.

Alas, some motherboards in our recent times come with no speaker nor LED, but thankfully with a speaker header, in case you happen to have a spare one at home. That’s not my case, but it seems I found a more modern workaround tonight, while debugging one of those temperamental machine.

I simply attached the A0 analog pin of my Arduino UNO to the speaker pin of the motherboard header, flashed the simple program below, and turned on the serial monitor.

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0); // A0 is plugged to the speaker pin
  Serial.println(sensorValue);
  delay(20);        // delay in between reads for stability and readability of the output
}

Here is the all too complex wiring of the debugging device!

I then turned on the machine, and lo and behold, the following printed before my tearful eyes!

...
20:40:19.209 -> 457
20:40:19.209 -> 459
20:40:19.242 -> 459
20:40:19.242 -> 458
20:40:19.275 -> 458
20:40:19.308 -> 459
20:40:19.308 -> 459
20:40:19.342 -> 459
20:40:19.342 -> 458
20:40:19.374 -> 458
20:40:19.408 -> 458
20:40:19.408 -> 457
20:40:19.441 -> 458
20:40:19.474 -> 458
20:40:19.474 -> 457
20:40:19.507 -> 457
20:40:19.507 -> 458
20:40:19.540 -> 457
20:40:19.573 -> 456
20:40:19.573 -> 456
20:40:19.606 -> 456
20:40:19.606 -> 455
20:40:19.639 -> 455
20:40:19.672 -> 454
20:40:19.672 -> 455
20:40:19.705 -> 454
20:40:19.705 -> 453
20:40:19.738 -> 454
20:40:19.771 -> 454
20:40:19.771 -> 452
20:40:19.804 -> 0
20:40:19.804 -> 0
20:40:19.837 -> 0
20:40:19.870 -> 0
20:40:19.870 -> 0
20:40:19.904 -> 0
20:40:19.937 -> 0
20:40:19.937 -> 0
20:40:19.970 -> 0
20:40:19.970 -> 0
20:40:20.003 -> 0
20:40:20.036 -> 0
20:40:20.036 -> 0
20:40:20.069 -> 0
20:40:20.069 -> 0
20:40:20.102 -> 0
20:40:20.135 -> 0
20:40:20.135 -> 0
20:40:20.168 -> 0
20:40:20.168 -> 0
20:40:20.201 -> 14
20:40:20.234 -> 29
20:40:20.234 -> 42
20:40:20.267 -> 53
20:40:20.300 -> 61
20:40:20.300 -> 0
20:40:20.333 -> 0
20:40:20.333 -> 0
20:40:20.366 -> 0
20:40:20.400 -> 0
20:40:20.400 -> 0
20:40:20.433 -> 0
20:40:20.433 -> 0
20:40:20.466 -> 0
20:40:20.499 -> 0
20:40:20.499 -> 0
20:40:20.532 -> 0
20:40:20.532 -> 0
20:40:20.565 -> 0
20:40:20.598 -> 0
20:40:20.598 -> 0
20:40:20.631 -> 0
20:40:20.631 -> 0
20:40:20.664 -> 0
20:40:20.697 -> 0
20:40:20.697 -> 24
20:40:20.730 -> 36
20:40:20.763 -> 47
20:40:20.763 -> 59
20:40:20.796 -> 0
20:40:20.796 -> 0
20:40:20.829 -> 0
20:40:20.862 -> 0
20:40:20.862 -> 0
20:40:20.896 -> 0
20:40:20.896 -> 0
20:40:20.929 -> 0
20:40:20.962 -> 0
20:40:20.962 -> 0
20:40:20.995 -> 0
20:40:20.995 -> 0
20:40:21.028 -> 0
20:40:21.061 -> 0
20:40:21.061 -> 0
20:40:21.094 -> 0
20:40:21.127 -> 0
20:40:21.127 -> 0
20:40:21.160 -> 0
20:40:21.160 -> 0
20:40:21.193 -> 0
20:40:21.226 -> 31
20:40:21.226 -> 43
20:40:21.259 -> 54
20:40:21.259 -> 64
20:40:21.292 -> 0
20:40:21.325 -> 0
20:40:21.325 -> 0
20:40:21.358 -> 0
20:40:21.358 -> 0
20:40:21.392 -> 0
20:40:21.425 -> 0
20:40:21.425 -> 0
20:40:21.458 -> 0
20:40:21.491 -> 0
20:40:21.491 -> 0
20:40:21.524 -> 0
20:40:21.524 -> 0
20:40:21.557 -> 0
20:40:21.590 -> 0
20:40:21.590 -> 0
20:40:21.623 -> 0
20:40:21.623 -> 0
20:40:21.656 -> 0
20:40:21.689 -> 0
20:40:21.689 -> 10
20:40:21.722 -> 31
20:40:21.722 -> 43
20:40:21.755 -> 52
20:40:21.788 -> 60
20:40:21.788 -> 0
20:40:21.821 -> 0
20:40:21.855 -> 0
20:40:21.855 -> 0
20:40:21.888 -> 0
20:40:21.888 -> 0
20:40:21.921 -> 0
20:40:21.954 -> 0
20:40:21.954 -> 0
20:40:21.987 -> 0
20:40:21.987 -> 0
20:40:22.020 -> 0
20:40:22.053 -> 0
20:40:22.053 -> 0
20:40:22.086 -> 0
20:40:22.086 -> 0
20:40:22.119 -> 0
20:40:22.152 -> 0
20:40:22.152 -> 0
20:40:22.185 -> 0
20:40:22.218 -> 12
20:40:22.218 -> 28
20:40:22.251 -> 40
20:40:22.251 -> 51
20:40:22.284 -> 59
20:40:22.317 -> 69
20:40:22.317 -> 77
20:40:22.351 -> 85
20:40:22.351 -> 92
20:40:22.384 -> 100
20:40:22.417 -> 106
20:40:22.417 -> 112
20:40:22.450 -> 117
20:40:22.483 -> 124
20:40:22.483 -> 130
20:40:22.516 -> 134
20:40:22.516 -> 141
20:40:22.549 -> 146
20:40:22.582 -> 151
20:40:22.582 -> 155
20:40:22.615 -> 160
20:40:22.615 -> 164
20:40:22.648 -> 168
20:40:22.681 -> 172
20:40:22.681 -> 177
20:40:22.714 -> 181
20:40:22.714 -> 184
20:40:22.747 -> 188
20:40:22.780 -> 192
20:40:22.780 -> 196
20:40:22.813 -> 199
20:40:22.847 -> 203
20:40:22.847 -> 206
20:40:22.880 -> 209
20:40:22.880 -> 211
20:40:22.913 -> 216
20:40:22.946 -> 219
20:40:22.946 -> 221
20:40:22.979 -> 224
20:40:22.979 -> 227
20:40:23.012 -> 230
20:40:23.045 -> 232
20:40:23.045 -> 234
20:40:23.078 -> 237
20:40:23.111 -> 238
20:40:23.111 -> 240
20:40:23.144 -> 243
20:40:23.144 -> 247
20:40:23.177 -> 247
20:40:23.210 -> 249
20:40:23.210 -> 251
20:40:23.243 -> 253
20:40:23.243 -> 253
20:40:23.276 -> 256
20:40:23.310 -> 258
20:40:23.310 -> 259
20:40:23.343 -> 261
20:40:23.343 -> 263
20:40:23.376 -> 264
20:40:23.409 -> 265
20:40:23.409 -> 266
20:40:23.442 -> 268
20:40:23.475 -> 270
20:40:23.475 -> 270
20:40:23.508 -> 271
20:40:23.508 -> 273
20:40:23.541 -> 274
20:40:23.574 -> 275
20:40:23.574 -> 277
20:40:23.607 -> 279
20:40:23.607 -> 279
20:40:23.640 -> 280
...

The careful reader will have noticed the five series of contiguous zeros, among the apparently random values! That’s the clear sign of a signal that was communicated to me by the distressful mainboard. It was, at least partially, alive!


The rest is only usual: — the board seems to still self diagnose, it was the five beeps of a “processor or motherboard failure”, whatever that means… — some random guy on a random forum says that only the VGA output was broken in his 2002 similar situation… — why not, let’s try putting in some random old graphic card and getting the display from another output… — thanks the Force, that worked! — for whatever reason, likely the storms of the past weeks, the MB’s VGA output is burnt, but everything boots fine with a PCI graphic card… — end of debugging, thank you good night!