 }
 
 void startLCDTest() {
+  // Read the firmware information
+  uint32_t address, crc, service_crc;
+  uint32_t end_address = 0x40000;
+  do {
+    if (pgm_read_word_far(end_address-2) != 0xFFFF) {
+      break;
+    }
+    end_address -= 2;
+  } while (end_address != 0x3E000);
+  crc = ~0;
+  service_crc = ~0;
+  address = 0x3E000;
+  do {
+    crc ^= pgm_read_byte_far(address);
+    for (unsigned char k = 8; k; k--) {
+      unsigned char m = (crc & 0x1);
+      crc >>= 1;
+      if (m) crc ^= 0xEDB88320;
+    }
+    if (++address == 0x3E100) service_crc = ~crc;
+  } while (address != end_address);
+  crc = ~crc;
+
   // As a first test, show RGB colors on the screen to verify readout works as expected
   display.fillRect(0, 0, 107, 120, RED);
   display.fillRect(107, 0, 106, 120, GREEN);

  display.setCursor(70, 100);
  display.print("start the test");

  // Firmware information
  showFirmwareInfo();

  // Show message to serial to indicate testing can be started
  Serial.println("Press SELECT to continue...");

  
  // Wipe screen
  display.fill(BLACK);
}