{"id":1280,"date":"2026-10-23T06:54:17","date_gmt":"2026-10-23T06:54:17","guid":{"rendered":"https:\/\/www.r3tr0.net\/?page_id=1280"},"modified":"2026-10-23T06:54:19","modified_gmt":"2026-10-23T06:54:19","slug":"wmdoc_firmware-cpld-update","status":"publish","type":"page","link":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/","title":{"rendered":"WonderMCA: Firmware and CPLD update"},"content":{"rendered":"\n<div class=\"wp-block-group wmdoc-hero has-text-color has-background has-link-color wp-elements-1 is-layout-constrained wp-container-core-group-is-layout-89221c49 wp-block-group-is-layout-constrained\" style=\"border-radius:10px;color:#edf5ff;background-color:#001141;margin-bottom:32px;padding-top:28px;padding-right:32px;padding-bottom:28px;padding-left:32px\">\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#78a9ff;margin-bottom:8px;font-size:13px;font-weight:600;letter-spacing:2px;text-transform:uppercase\">WonderMCA \u00b7 User documentation <\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"margin-top:0;font-size:19px;line-height:1.55\">How to check the versions of the firmware, the option ROM and the CPLD, how to update the firmware through USB-C, and how to update the CPLD from the microSD card with the four JTAG switches, with every screen of the update.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"margin-top:12px;font-size:14px\"><a href=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/\">\u2190 WonderMCA documentation home<\/a> \u00b7 Page 4 of 18<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group wmdoc-toc has-border-color has-background is-layout-constrained wp-container-core-group-is-layout-67fe145d wp-block-group-is-layout-constrained\" style=\"border-color:#dcdcde;border-width:1px;border-radius:8px;background-color:#f6f7f7;margin-bottom:32px;padding-top:16px;padding-right:24px;padding-bottom:16px;padding-left:24px\">\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>On this page \u2014 3 sections<\/summary>\n<ul class=\"wp-block-list\">\n<li><a href=\"#which-versions-do-you-run\">Which versions do you run?<\/a><\/li>\n\n\n\n<li><a href=\"#updating-the-firmware\">Updating the firmware<\/a><\/li>\n\n\n\n<li><a href=\"#updating-the-cpld\">Updating the CPLD<\/a><\/li>\n<\/ul>\n<\/details>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The card has three pieces of software: the <strong>firmware<\/strong> of the RP2350, the <strong>boot ROM<\/strong> that the firmware serves to the PS\/2, and the <strong>logic<\/strong> of the <strong>CPLD<\/strong>. The option ROM is part of the firmware file. The CPLD is updated separately. The card is on <a href=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_hardware-installation\/\">02-hardware-and-installation<\/a>. The microSD card is on <a href=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_sd-card\/\">03-microsd-card-preparation<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The three pieces are updated using the same process via the microSD or the USB-C connector on the board<\/p>\n\n\n\n<h2 id=\"which-versions-do-you-run\" class=\"wp-block-heading\">Which versions do you run?<\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>What<\/th><th>Where you see it<\/th><th>Current<\/th><\/tr><\/thead><tbody><tr><td>boot ROM<\/td><td>The boot banner: <strong>WonderMCA BIOS (Date &#8230; Rev 08ED)<\/strong>. The <strong>Main<\/strong> page of the setup menu: <strong>BIOS Rev<\/strong>. The screenpad logo at power-on: <code class=\"\" data-line=\"\">0x08ED<\/code><\/td><td>08ED<\/td><\/tr><tr><td><\/td><td>The screenpad, <strong>Others &gt; Information<\/strong>, line <strong>FW:<\/strong> (for example <code class=\"\" data-line=\"\">0.1-b0002<\/code>), and the line <strong>Build:<\/strong> with the build date<\/td><td><\/td><\/tr><tr><td>Bus width of the firmware<\/td><td>The <strong>Main<\/strong> page of the setup menu: <strong>MCA Bus: 16Bits<\/strong> or <strong>8Bits<\/strong><\/td><td>16Bits<\/td><\/tr><tr><td>CPLD<\/td><td>The CPLD update screens show the revision from the name of the update file. No setup page shows it<\/td><td>123<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"400\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main.png\" alt=\"The Main page of the setup menu: BIOS Rev 08ED, MCA Bus 16Bits, the memory and the drives, the board interrupt, Fast Boot, Use RTC and the clock of the card\" class=\"wp-image-1119\" style=\"border-radius:6px;width:560px;height:auto\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main.png 720w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main-300x167.png 300w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main-600x333.png 600w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><figcaption class=\"wp-element-caption\">The Main page of the setup menu: BIOS Rev 08ED, MCA Bus 16Bits, the memory and the drives, the board interrupt, Fast Boot, Use RTC and the clock of the card<\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-group wmdoc-callout wmdoc-note has-background is-layout-constrained wp-container-core-group-is-layout-1828d0e2 wp-block-group-is-layout-constrained\" style=\"border-radius:6px;border-left-color:#f0b429;border-left-style:solid;border-left-width:4px;background-color:#fff8e1;margin-top:24px;margin-bottom:24px;padding-top:12px;padding-right:20px;padding-bottom:12px;padding-left:20px\">\n<p class=\"wp-block-paragraph\"><strong>Note.<\/strong> not every firmware release comes with a CPLD update, if you switch from 8-bit to 16-bit data bus firmware you need to change the CPLD firmware otherwise the card will not work anymore (and vice versa).<\/p>\n<\/div>\n\n\n\n<h2 id=\"updating-the-firmware\" class=\"wp-block-heading\">Updating the firmware<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You update the firmware through the USB-C port, with the card <strong>out of the PS\/2<\/strong>.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Switch the PS\/2 off and take the card out of it (<a href=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_hardware-installation\/\">page 02<\/a>).<\/li>\n\n\n\n<li>Choose the right file. The firmware comes in two builds: <strong>16-bit<\/strong> and <strong>8-bit<\/strong>. by default the card is shipped with the 16-bit bus cold configuration <\/li>\n\n\n\n<li>Connect the USB-C port of the card (<strong>I<\/strong>) to your computer.<\/li>\n\n\n\n<li>Hold the <strong>BOOT RP<\/strong> button (<strong>B<\/strong>, SW1) and press <strong>RESET<\/strong> (SW2). Release both. The RP2350 starts its USB bootloader and a USB drive appears on your computer.<\/li>\n\n\n\n<li>Copy the <code class=\"\" data-line=\"\">.uf2<\/code> firmware file onto that drive. The card restarts by itself when the copy ends.<\/li>\n\n\n\n<li>Unplug the cable. Put the card back in the PS\/2 (with the PS\/2 off) and start it.<\/li>\n\n\n\n<li>Check the version (<a href=\"#which-versions-do-you-run\">above<\/a>).<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-group wmdoc-callout wmdoc-warn has-background is-layout-constrained wp-container-core-group-is-layout-1828d0e2 wp-block-group-is-layout-constrained\" style=\"border-radius:6px;border-left-color:#d63638;border-left-style:solid;border-left-width:4px;background-color:#fdecec;margin-top:24px;margin-bottom:24px;padding-top:12px;padding-right:20px;padding-bottom:12px;padding-left:20px\">\n<p class=\"wp-block-paragraph\"><strong>Warning.<\/strong> Never plug the card into the PS\/2 while the USB-C cable is connected.<\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Your settings stay in <code class=\"\" data-line=\"\">PICOMEM.CFG<\/code> on the microSD card. The option ROM revision changes with the firmware: after an update, the banner, the <strong>Main<\/strong> page and the screenpad logo show the new revision.<\/p>\n\n\n\n<h2 id=\"updating-the-cpld\" class=\"wp-block-heading\">Updating the CPLD<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The card reprograms its own CPLD from a file on the microSD card, with no JTAG cable. This is for a new logic revision. It is not part of normal use. It needs a <strong>board revision 9<\/strong>, which has the four JTAG switches. A board revision 8 needs a cable on the TC2050 pads.<\/p>\n\n\n\n<h3 id=\"what-you-need\" class=\"wp-block-heading\">What you need<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A programming file for the ATF1508 made for the WonderMCA, in <code class=\"\" data-line=\"\">.svf<\/code> format (or <code class=\"\" data-line=\"\">.xsvf<\/code>). It must erase the CPLD first: it must contain <strong>Erase, Program and Verify<\/strong>. If your tool makes the erase and the verify as separate files, you can use three files.<\/li>\n\n\n\n<li>The microSD card.<\/li>\n\n\n\n<li>The screenpad is recommended: it shows the progress and the result.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group wmdoc-callout wmdoc-warn has-background is-layout-constrained wp-container-core-group-is-layout-1828d0e2 wp-block-group-is-layout-constrained\" style=\"border-radius:6px;border-left-color:#d63638;border-left-style:solid;border-left-width:4px;background-color:#fdecec;margin-top:24px;margin-bottom:24px;padding-top:12px;padding-right:20px;padding-bottom:12px;padding-left:20px\">\n<p class=\"wp-block-paragraph\"><strong>Warning.<\/strong> Use a file that keeps the JTAG port of the CPLD on. A file built with JTAG switched off makes the CPLD impossible to reprogram, by this card or by a cable. If you build the file yourself, check that the fitter report says <code class=\"\" data-line=\"\">JTAG = ON<\/code> and <code class=\"\" data-line=\"\">Security_mode = OFF<\/code>.<\/p>\n<\/div>\n\n\n\n<h3 id=\"the-file-names\" class=\"wp-block-heading\">The file names<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Put the files in a folder named <code class=\"\" data-line=\"\">UPGRADE<\/code> at the root of the microSD card:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>File<\/th><th>Role<\/th><\/tr><\/thead><tbody><tr><td><code class=\"\" data-line=\"\">cpld_upgrade.svf<\/code> or <code class=\"\" data-line=\"\">cpld_upgrade_123.svf<\/code><\/td><td>The programming file. Required. The number after the underscore is the CPLD revision. It is only there so that you can see later what was programmed: the screens show it<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">cpld_erase.svf<\/code><\/td><td>Optional. An erase step, played first<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">cpld_verif.svf<\/code><\/td><td>Optional. A verify step, played last<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A binary <code class=\"\" data-line=\"\">.xsvf<\/code> file is accepted in place of an <code class=\"\" data-line=\"\">.svf<\/code> file.<\/li>\n\n\n\n<li>Case does not matter.<\/li>\n\n\n\n<li>Only <strong>one<\/strong> file of each kind may be in the folder. With two, the card cannot tell which revision you mean and stops.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"step-by-step\" class=\"wp-block-heading\">Step by step<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Switch the PS\/2 off.<\/li>\n\n\n\n<li>Set the four JTAG switches (<strong>S<\/strong>) to <strong>On<\/strong>, towards the top edge of the card:<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Switch<\/th><th>Signal<\/th><\/tr><\/thead><tbody><tr><td>SW1<\/td><td>TCK<\/td><\/tr><tr><td>SW2<\/td><td>TMS<\/td><\/tr><tr><td>SW3<\/td><td>TDI<\/td><\/tr><tr><td>SW4<\/td><td>TDO<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Copy the file or files to <code class=\"\" data-line=\"\">UPGRADE<\/code> on the microSD card and insert the card.<\/li>\n\n\n\n<li>Switch the PS\/2 on. The card does not serve the bus: the PS\/2 does <strong>not<\/strong> finish its own start-up during an update. That is normal.<\/li>\n\n\n\n<li>The screenpad shows <strong>CPLD UPDATE<\/strong> and <strong>Checking JTAG&#8230;<\/strong> while the card tests the connection to the CPLD.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_checking.png\" alt=\"The screenpad at the start of the update: CPLD UPDATE, Checking JTAG...\" class=\"wp-image-1157\" style=\"border-radius:6px;width:256px;height:auto\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_checking.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_checking-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The screenpad at the start of the update: CPLD UPDATE, Checking JTAG&#8230;<\/figcaption><\/figure>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>Then it shows the revision from the file name and the identification code read from the CPLD (<code class=\"\" data-line=\"\">rev 106 ID 0150803F<\/code> in the pictures), a progress bar, the percentage and the step: <strong>erasing<\/strong>, <strong>programming<\/strong>, <strong>verifying<\/strong>. The yellow LED (LED3) is on. This takes about a minute.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-3 wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\" style=\"margin-top:24px;margin-bottom:24px\">\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1159\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_erasing_0.png\" alt=\"The erase step starting: rev 106 ID 0150803F, an empty bar, &quot;0% erasing&quot;\" class=\"wp-image-1159\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_erasing_0.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_erasing_0-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The erase step starting: rev 106 ID 0150803F, an empty bar, &#8220;0% erasing&#8221;<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1160\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_erasing_62.png\" alt=\"The erase step at 62%\" class=\"wp-image-1160\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_erasing_62.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_erasing_62-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The erase step at 62%<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1167\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_programming_45.png\" alt=\"The programming step at 45%\" class=\"wp-image-1167\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_programming_45.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_programming_45-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The programming step at 45%<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1168\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_programming_done.png\" alt=\"The programming step finished: a full bar and &quot;100% DONE&quot;\" class=\"wp-image-1168\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_programming_done.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_programming_done-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The programming step finished: a full bar and &#8220;100% DONE&#8221;<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1176\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_verifying_80.png\" alt=\"The verify step at 80%\" class=\"wp-image-1176\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_verifying_80.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_verifying_80-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The verify step at 80%<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li>When it is done, the board LED blinks and the screenpad shows the result page <strong>UPDATE OK<\/strong>: <strong>Programmed + verified<\/strong> (or <strong>Programmed (no verify)<\/strong> when the files held no verify step), <strong>Files kept: REDOES IT<\/strong>, the revision, the identification code and <strong>POWER CYCLE NOW<\/strong>. The page then gives way to the stop screen. The card has stopped.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-2 wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\" style=\"margin-top:24px;margin-bottom:24px\">\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1174\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_ok.png\" alt=\"The result page: UPDATE OK, Programmed + verified, Files kept: REDOES IT, CPLD rev 106, ID 0150803F, POWER CYCLE NOW\" class=\"wp-image-1174\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_ok.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_ok-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The result page: UPDATE OK, Programmed + verified, Files kept: REDOES IT, CPLD rev 106, ID 0150803F, POWER CYCLE NOW<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1162\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_halt_ok.png\" alt=\"The stop screen: CPLD UPDATE, UPDATE OK, POWER CYCLE NOW\" class=\"wp-image-1162\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_halt_ok.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_halt_ok-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The stop screen: CPLD UPDATE, UPDATE OK, POWER CYCLE NOW<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<ol start=\"8\" class=\"wp-block-list\">\n<li>Switch the PS\/2 off. Set the four JTAG switches back to <strong>Off<\/strong>.<\/li>\n\n\n\n<li><strong>Remove the update files from the microSD card.<\/strong> The files stay on the card: that is what <strong>Files kept: REDOES IT<\/strong> means. If you leave them and set the switches again, the card erases and programs the CPLD again. The CPLD survives only a limited number of erase cycles.<\/li>\n\n\n\n<li>Switch on. The card starts normally.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The messages of the update also go to <code class=\"\" data-line=\"\">UPGRADE\/cpld_upgrade.log<\/code> on the microSD card, rewritten at every update. The log lists <code class=\"\" data-line=\"\">Programmed + verified<\/code> when the files contained verify steps, and <code class=\"\" data-line=\"\">Programmed (no verify)<\/code> when they did not.<\/p>\n\n\n\n<h3 id=\"all-four-switches-or-none\" class=\"wp-block-heading\">All four switches, or none<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SW1 and SW2 take interrupts 6 and 7 away from the bus. While the switches are on, the card cannot serve the machine and does nothing but the update. If only some of them are on, the card can do neither job: it stops with the red LED (LED0) lit and shows the switch positions:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_dip_partial.png\" alt=\"The JTAG DIP PARTIAL screen: SW1 TCK ON, SW2 TMS off, SW3 TDI ON, SW4 TDO -, &quot;All 4 on, or all off&quot;\" class=\"wp-image-1158\" style=\"border-radius:6px;width:256px;height:auto\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_dip_partial.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_dip_partial-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The JTAG DIP PARTIAL screen: SW1 TCK ON, SW2 TMS off, SW3 TDI ON, SW4 TDO -, &#8220;All 4 on, or all off&#8221;<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Set all four the same way and switch the PS\/2 off and on. SW4 always shows a dash: the card cannot read that switch. If SW4 is off during an update, the card stops with <strong>No device answers<\/strong>, having written nothing.<\/p>\n\n\n\n<h3 id=\"the-messages-of-the-update\" class=\"wp-block-heading\">The messages of the update<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Screenpad<\/th><th>Meaning<\/th><th>What to do<\/th><\/tr><\/thead><tbody><tr><td><strong>JTAG DIP PARTIAL<\/strong><\/td><td>Some of the four switches are on and some are off<\/td><td>The card has stopped. Set all four, or all four off, and power cycle. Nothing was written<\/td><\/tr><tr><td><strong>JTAG MODE<\/strong> with <strong>Nothing to update<\/strong> and <strong>Bus handler not started<\/strong><\/td><td>The switches are on but there is no update file<\/td><td>Not an error, no red LED. The card waits. <strong>Set the DIP back<\/strong> and power cycle<\/td><\/tr><tr><td><strong>UPDATE FAILED<\/strong> with <strong>JTAG not ready<\/strong> and <strong>DIP switch or wiring<\/strong> (or <strong>TCK DIP switch is off<\/strong>)<\/td><td>A signal does not reach the CPLD<\/td><td>Check the switch and the wiring, then reboot. Nothing was written<\/td><\/tr><tr><td><strong>UPDATE FAILED<\/strong> with <strong>No device answers<\/strong> and <strong>All 4 switches read ON<\/strong><\/td><td>The switches are on but the CPLD does not answer<\/td><td>Check the TDO and TDI wiring and SW4. Nothing was written<\/td><\/tr><tr><td><strong>UPDATE FAILED<\/strong> with <strong>SEVERAL FILES<\/strong> and <strong>in 0:\/UPGRADE<\/strong><\/td><td>More than one file of the same kind<\/td><td>Leave exactly one of each kind<\/td><\/tr><tr><td><strong>NO SVF FILES<\/strong> and <strong>in 0:\/UPGRADE<\/strong><\/td><td>The switches are on, the folder exists, but it holds no <code class=\"\" data-line=\"\">.svf<\/code> or <code class=\"\" data-line=\"\">.xsvf<\/code> file<\/td><td>Copy the file, or set the switches off<\/td><\/tr><tr><td><strong>UPDATE FAILED<\/strong> with <strong>Erase step<\/strong> or <strong>Programming step<\/strong> and a reason, then <strong>Fix and reboot<\/strong><\/td><td>The update stopped part way. The bar shows the percentage reached and <strong>FAILED<\/strong><\/td><td>The CPLD is in an unknown state. Try again. If it fails again, program it with an external JTAG cable<\/td><\/tr><tr><td><strong>VERIFY FAILED<\/strong><\/td><td>The content read back differs from the file. The second line says where (<code class=\"\" data-line=\"\">line 412<\/code> in the picture)<\/td><td>Try again. If the CPLD no longer answers after the update, the file may have switched the JTAG port off: program the CPLD with an external JTAG cable<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-3 wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\" style=\"margin-top:24px;margin-bottom:24px\">\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1166\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_note_jtag_mode.png\" alt=\"The JTAG MODE screen: Nothing to update, Bus handler not started, CPLD rev 106, Set the DIP back\" class=\"wp-image-1166\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_note_jtag_mode.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_note_jtag_mode-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The JTAG MODE screen: Nothing to update, Bus handler not started, CPLD rev 106, Set the DIP back<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1172\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_jtag_not_ready.png\" alt=\"UPDATE FAILED with JTAG not ready, DIP switch or wiring, Set it, then reboot\" class=\"wp-image-1172\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_jtag_not_ready.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_jtag_not_ready-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">UPDATE FAILED with JTAG not ready, DIP switch or wiring, Set it, then reboot<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1173\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_no_device.png\" alt=\"UPDATE FAILED with No device answers, All 4 switches read ON, Check the wiring\" class=\"wp-image-1173\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_no_device.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_no_device-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">UPDATE FAILED with No device answers, All 4 switches read ON, Check the wiring<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1175\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_several_files.png\" alt=\"UPDATE FAILED with SEVERAL FILES in 0:\/UPGRADE, Leave only one\" class=\"wp-image-1175\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_several_files.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_several_files-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">UPDATE FAILED with SEVERAL FILES in 0:\/UPGRADE, Leave only one<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1165\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_no_svf_files.png\" alt=\"The NO SVF FILES screen\" class=\"wp-image-1165\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_no_svf_files.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_no_svf_files-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The NO SVF FILES screen<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1169\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_progress_failed.png\" alt=\"The progress bar stopped at 37% with FAILED\" class=\"wp-image-1169\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_progress_failed.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_progress_failed-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The progress bar stopped at 37% with FAILED<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1171\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_failed.png\" alt=\"UPDATE FAILED with Programming step, TDO mismatch line 412, Fix and reboot\" class=\"wp-image-1171\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_failed.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_result_failed-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">UPDATE FAILED with Programming step, TDO mismatch line 412, Fix and reboot<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1161\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_halt_failed.png\" alt=\"The stop screen VERIFY FAILED, line 412\" class=\"wp-image-1161\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_halt_failed.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_halt_failed-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The stop screen VERIFY FAILED, line 412<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A failed update does not ruin the card: the CPLD can always be reprogrammed with an external cable. After a failure the update files are left in place, and <code class=\"\" data-line=\"\">cpld_upgrade.log<\/code> holds the whole run. Send it with your report.<\/p>\n\n\n\n<h3 id=\"choosing-the-files-by-hand\" class=\"wp-block-heading\">Choosing the files by hand<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">With <code class=\"\" data-line=\"\">CPLD_UPDATE_AUTO 0<\/code> in <code class=\"\" data-line=\"\">config.txt<\/code>, the card does not play the files by itself. After the checks, the screenpad lists the <code class=\"\" data-line=\"\">.svf<\/code> and <code class=\"\" data-line=\"\">.xsvf<\/code> files of the <code class=\"\" data-line=\"\">UPGRADE<\/code> folder, in the order erase, program, verify. The title shows the revision and the identification code. A star after a name marks a file already played. A name too long for the row is cut at its start and begins with <code class=\"\" data-line=\"\">~<\/code>. The bottom row shows the position in the list and the keys: <strong>ENTER run RET<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-2 wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\" style=\"margin-top:24px;margin-bottom:24px\">\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1163\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_manual_menu_1.png\" alt=\"The manual list: ~ld_erase_106.svf with a star, ~_upgrade_106.svf, ~ld_verif_106.svf, cursor on the first, &quot;1\/3 ENTER run RET&quot;\" class=\"wp-image-1163\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_manual_menu_1.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_manual_menu_1-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The manual list: ~ld_erase_106.svf with a star, ~_upgrade_106.svf, ~ld_verif_106.svf, cursor on the first, &#8220;1\/3 ENTER run RET&#8221;<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"256\" data-id=\"1164\" src=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_manual_menu_2.png\" alt=\"The same list with the cursor on the second file, &quot;2\/3 ENTER run RET&quot;\" class=\"wp-image-1164\" style=\"border-radius:6px\" srcset=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_manual_menu_2.png 512w, https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_screenpad_cpld_manual_menu_2-300x150.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption class=\"wp-element-caption\">The same list with the cursor on the second file, &#8220;2\/3 ENTER run RET&#8221;<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Key<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td>Knob, <strong>UP<\/strong>, <strong>DOWN<\/strong><\/td><td>Choose a file<\/td><\/tr><tr><td><strong>ENTER<\/strong><\/td><td>Play the chosen file<\/td><\/tr><tr><td><strong>RET<\/strong><\/td><td>End the session. The screen says <strong>SESSION ENDED<\/strong> and <strong>POWER CYCLE NOW<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This mode needs the screenpad. Without one, the card stops with <strong>NO SCREENPAD<\/strong> and asks for <code class=\"\" data-line=\"\">CPLD_UPDATE_AUTO 1<\/code>.<\/p>\n\n\n\n<h3 id=\"turning-the-feature-off\" class=\"wp-block-heading\">Turning the feature off<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code class=\"\" data-line=\"\">CPLD_UPDATE 0<\/code> in <code class=\"\" data-line=\"\">config.txt<\/code> switches the whole feature off: the card ignores the four switches, starts normally and never looks at the <code class=\"\" data-line=\"\">UPGRADE<\/code> folder. Use it only if the switch check gets your board wrong, and keep the switches off: a switch left on lets the card&#8217;s interrupts reach the programming port of the CPLD. <code class=\"\" data-line=\"\">CPLD_UPDATE 0<\/code> wins over <code class=\"\" data-line=\"\">CPLD_UPDATE_AUTO<\/code>.<\/p>\n\n\n\n<h3 id=\"if-the-cpld-misbehaves-after-an-update\" class=\"wp-block-heading\">If the CPLD misbehaves after an update<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Programming a CPLD that was not erased first leaves it wrong without any message. Check that your file contains the erase, or that you used a <code class=\"\" data-line=\"\">cpld_erase.svf<\/code>. The log says <strong>no cpld_erase file: the program file must erase the device itself<\/strong> when no separate erase file was found.<\/p>\n\n\n\n<div class=\"wp-block-group wmdoc-callout wmdoc-warn has-background is-layout-constrained wp-container-core-group-is-layout-1828d0e2 wp-block-group-is-layout-constrained\" style=\"border-radius:6px;border-left-color:#d63638;border-left-style:solid;border-left-width:4px;background-color:#fdecec;margin-top:24px;margin-bottom:24px;padding-top:12px;padding-right:20px;padding-bottom:12px;padding-left:20px\">\n<p class=\"wp-block-paragraph\"><strong>Warning.<\/strong> Never use the TC2050 connector with the JTAG CFG switch off, it can damaged the RP2350 due to 3.3V vs 5V GPIO. at the end of the CPLD update process, it is very important to switch JTAG CFG back off.<\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" style=\"margin-top:48px;margin-bottom:24px\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group has-background is-layout-constrained wp-container-core-group-is-layout-0ee9f569 wp-block-group-is-layout-constrained\" style=\"border-radius:8px;background-color:#f6f7f7;padding-top:14px;padding-right:18px;padding-bottom:14px;padding-left:18px\">\n<p class=\"has-text-align-left has-text-color wp-block-paragraph\" style=\"color:#0f62fe;margin-bottom:2px;font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase\">\u2190 Previous<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"margin-top:0;font-size:17px;font-weight:600\"><a href=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_sd-card\/\">The microSD card<\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group has-background is-layout-constrained wp-container-core-group-is-layout-0ee9f569 wp-block-group-is-layout-constrained\" style=\"border-radius:8px;background-color:#f6f7f7;padding-top:14px;padding-right:18px;padding-bottom:14px;padding-left:18px\">\n<p class=\"has-text-align-right has-text-color wp-block-paragraph\" style=\"color:#0f62fe;margin-bottom:2px;font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase\">Next \u2192<\/p>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\" style=\"margin-top:0;font-size:17px;font-weight:600\"><a href=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_usage-guide\/\">Usage guide<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-text-color wp-block-paragraph\" style=\"color:#787c82;margin-top:20px;font-size:13px\">WonderMCA user documentation \u00b7 <a href=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/\">Documentation home<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to check the versions of the firmware, the option ROM and the CPLD, how to update the firmware through USB-C, and how to update the CPLD from the microSD card with the four JTAG switches, with every screen of the update.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1277,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"tags":[49,33,32,34,50],"class_list":["post-1280","page","type-page","status-publish","hentry","tag-documentation","tag-ibm","tag-mca","tag-ps-2","tag-wondermca"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WonderMCA: Firmware and CPLD update - R3TR0<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WonderMCA: Firmware and CPLD update - R3TR0\" \/>\n<meta property=\"og:description\" content=\"How to check the versions of the firmware, the option ROM and the CPLD, how to update the firmware through USB-C, and how to update the CPLD from the microSD card with the four JTAG switches, with every screen of the update.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/\" \/>\n<meta property=\"og:site_name\" content=\"R3TR0\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T06:54:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/wmdoc_firmware-cpld-update\\\/\",\"url\":\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/wmdoc_firmware-cpld-update\\\/\",\"name\":\"WonderMCA: Firmware and CPLD update - R3TR0\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/wmdoc_firmware-cpld-update\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/wmdoc_firmware-cpld-update\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.r3tr0.net\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/wm_bios_setup_main.png\",\"datePublished\":\"2026-10-23T06:54:17+00:00\",\"dateModified\":\"2026-10-23T06:54:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/wmdoc_firmware-cpld-update\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/wmdoc_firmware-cpld-update\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/wmdoc_firmware-cpld-update\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.r3tr0.net\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/wm_bios_setup_main.png\",\"contentUrl\":\"https:\\\/\\\/www.r3tr0.net\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/wm_bios_setup_main.png\",\"width\":720,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/wmdoc_firmware-cpld-update\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.r3tr0.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WonderMCA: Overview and features\",\"item\":\"https:\\\/\\\/www.r3tr0.net\\\/index.php\\\/wondermca-documentation\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"WonderMCA: Firmware and CPLD update\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/#website\",\"url\":\"https:\\\/\\\/www.r3tr0.net\\\/\",\"name\":\"R3TR0\",\"description\":\"New silicon for old machines, Home of the SmartDisk II Apple II disk emulator and the WonderMCA expansion card for IBM PS\\\/2. Open retro hardware, firmware updates, guides and downloads.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.r3tr0.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/#organization\",\"name\":\"R3TR0\",\"url\":\"https:\\\/\\\/www.r3tr0.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.r3tr0.net\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/r3tr0-logo-invoice-v2.png\",\"contentUrl\":\"https:\\\/\\\/www.r3tr0.net\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/r3tr0-logo-invoice-v2.png\",\"width\":1011,\"height\":378,\"caption\":\"R3TR0\"},\"image\":{\"@id\":\"https:\\\/\\\/www.r3tr0.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WonderMCA: Firmware and CPLD update - R3TR0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/","og_locale":"en_US","og_type":"article","og_title":"WonderMCA: Firmware and CPLD update - R3TR0","og_description":"How to check the versions of the firmware, the option ROM and the CPLD, how to update the firmware through USB-C, and how to update the CPLD from the microSD card with the four JTAG switches, with every screen of the update.","og_url":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/","og_site_name":"R3TR0","article_modified_time":"2026-10-23T06:54:19+00:00","og_image":[{"width":720,"height":400,"url":"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/","url":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/","name":"WonderMCA: Firmware and CPLD update - R3TR0","isPartOf":{"@id":"https:\/\/www.r3tr0.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/#primaryimage"},"image":{"@id":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/#primaryimage"},"thumbnailUrl":"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main.png","datePublished":"2026-10-23T06:54:17+00:00","dateModified":"2026-10-23T06:54:19+00:00","breadcrumb":{"@id":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/#primaryimage","url":"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main.png","contentUrl":"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/10\/wm_bios_setup_main.png","width":720,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/wmdoc_firmware-cpld-update\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.r3tr0.net\/"},{"@type":"ListItem","position":2,"name":"WonderMCA: Overview and features","item":"https:\/\/www.r3tr0.net\/index.php\/wondermca-documentation\/"},{"@type":"ListItem","position":3,"name":"WonderMCA: Firmware and CPLD update"}]},{"@type":"WebSite","@id":"https:\/\/www.r3tr0.net\/#website","url":"https:\/\/www.r3tr0.net\/","name":"R3TR0","description":"New silicon for old machines, Home of the SmartDisk II Apple II disk emulator and the WonderMCA expansion card for IBM PS\/2. Open retro hardware, firmware updates, guides and downloads.","publisher":{"@id":"https:\/\/www.r3tr0.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.r3tr0.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.r3tr0.net\/#organization","name":"R3TR0","url":"https:\/\/www.r3tr0.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.r3tr0.net\/#\/schema\/logo\/image\/","url":"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/09\/r3tr0-logo-invoice-v2.png","contentUrl":"https:\/\/www.r3tr0.net\/wp-content\/uploads\/2026\/09\/r3tr0-logo-invoice-v2.png","width":1011,"height":378,"caption":"R3TR0"},"image":{"@id":"https:\/\/www.r3tr0.net\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/pages\/1280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/comments?post=1280"}],"version-history":[{"count":3,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/pages\/1280\/revisions"}],"predecessor-version":[{"id":1338,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/pages\/1280\/revisions\/1338"}],"up":[{"embeddable":true,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/pages\/1277"}],"wp:attachment":[{"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/media?parent=1280"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/tags?post=1280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}