

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://proghq.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mcmaster</id>
	<title>Proghq - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://proghq.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mcmaster"/>
	<link rel="alternate" type="text/html" href="https://proghq.org/wiki/Special:Contributions/Mcmaster"/>
	<updated>2026-04-15T01:51:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://proghq.org/w/index.php?title=BPM_Socket&amp;diff=971</id>
		<title>BPM Socket</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=BPM_Socket&amp;diff=971"/>
		<updated>2024-07-05T21:33:57Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:BPM]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Accessories]]&lt;br /&gt;
&lt;br /&gt;
Look them up here: http://www3.bpmicro.com/DeviceList.nsf/SocketSolutions/&lt;br /&gt;
&lt;br /&gt;
Ex: http://www3.bpmicro.com/DeviceList.nsf/SocketSolutions/SM56TB&lt;br /&gt;
&lt;br /&gt;
This is also interesting: http://www3.bpmicro.com/DeviceList.nsf/128c573fb6a3a6d9862579b4006de31f!OpenView&lt;br /&gt;
&lt;br /&gt;
Info: [[http:&#039;&#039;www.bpmmicro.com/your-socket-solution/|http:&#039;&#039;www.bpmmicro.com/your-socket-solution/]]&lt;br /&gt;
&lt;br /&gt;
Device list: http://web.archive.org/web/20120925022829im_/http://www.bpmicro.com/pdf/engineering-device-list.pdf&lt;br /&gt;
&lt;br /&gt;
More info here: https://www.adaptsys.com/support-services/bpm-support/faq&lt;br /&gt;
&lt;br /&gt;
= Standard =&lt;br /&gt;
&lt;br /&gt;
Used on older programmers like BP series&lt;br /&gt;
&lt;br /&gt;
== Firmware analysis ==&lt;br /&gt;
&lt;br /&gt;
Case study on SM48D EEPROM&lt;br /&gt;
* samples&lt;br /&gt;
** 4 good&lt;br /&gt;
** 1 with corrupt EEPROM, mostly ignored&lt;br /&gt;
* unk00: always 17&lt;br /&gt;
* name: always SM48D&lt;br /&gt;
* namei&lt;br /&gt;
** no generally noticeable pattern&lt;br /&gt;
** 0xF0000000 always set&lt;br /&gt;
* unk1E: Relatively small number that varies, possibly serial number&lt;br /&gt;
* pad22: always 0 &lt;br /&gt;
* unk26: always 0&lt;br /&gt;
* unk44: always 0x55aa&lt;br /&gt;
* unk46: always 0xa233&lt;br /&gt;
* unk48: always 1&lt;br /&gt;
* pad4A: always 0&lt;br /&gt;
&lt;br /&gt;
Generally seems that there is a structure being used which is initialized to 0. Some fields are unused, keeping them at 0. Anything beyond the structure is 0xFF&lt;br /&gt;
&lt;br /&gt;
== SM32TC ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_sm32tc_top.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm32tc_top_open.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm32tc_btm.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SM44QC ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_sm44qc_top.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm44qc_top_open.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm44qc_btm.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SM48D ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_sm48d_top.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm48d_btm.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://x.com/johndmcmaster/status/1171332341244940288&lt;br /&gt;
&lt;br /&gt;
https://github.com/JohnDMcMaster/prog-cad/tree/master/bpm-socket/sm48d&lt;br /&gt;
== SM56TB ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ln bpm sm56tb btm.jpg|frameless]]&lt;br /&gt;
[[File:Ln bpm sm56tb top.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
http://www3.bpmicro.com/DeviceList.nsf/SocketSolutions/SM56TB&lt;br /&gt;
&lt;br /&gt;
== SM100TQ ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_sm100tq_top.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm100tq_btm.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SM-84UP ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_sm-84up_top.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm-84up_top_open.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm-84up_top_open_template.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm-84up_templates.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SM-208CQSX-Actel ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_sm-208cqsx-actel_top.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ASM100FBG ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_sm-_bga_hsc_top.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_sm-_bga_hsc_btm.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
Found at HSC. ASM100FBG is found in the EEPROM&lt;br /&gt;
&lt;br /&gt;
http://www3.bpmicro.com/DeviceList.nsf/SocketSolutions/ASM100FBG&lt;br /&gt;
&lt;br /&gt;
&amp;quot;BGA(100), 1.0 mm pitch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only supports 2 devices&lt;br /&gt;
&lt;br /&gt;
== SMAH48DL1 ==&lt;br /&gt;
&lt;br /&gt;
[[File:Bpm SMAH48DL1.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
Closest I could find: SMAH20P (http://www3.bpmicro.com/DeviceList.nsf/SocketSolutions/SMAH20P)&lt;br /&gt;
&lt;br /&gt;
Which is for a &amp;quot;PLCC(20...80)&amp;quot;. Weird&lt;br /&gt;
&lt;br /&gt;
= FX =&lt;br /&gt;
&lt;br /&gt;
= FX2, FX4 =&lt;br /&gt;
&lt;br /&gt;
= Purchasing =&lt;br /&gt;
&lt;br /&gt;
https://www.artisantg.com&lt;br /&gt;
* Has a large inventory, but they want $350 per socket&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=930</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=930"/>
		<updated>2022-12-22T06:28:25Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==WCH-link==&lt;br /&gt;
&lt;br /&gt;
Debug header&lt;br /&gt;
&lt;br /&gt;
#BO&lt;br /&gt;
#*94 BOOT0&lt;br /&gt;
#3V3&lt;br /&gt;
#*no 3.3V on PCB. I guess connect to WCH-Link 3V3?&lt;br /&gt;
#SWDCLK&lt;br /&gt;
#*PA14/SWCLK&lt;br /&gt;
#SWDIO&lt;br /&gt;
#*PA13/SWDIO&lt;br /&gt;
#ground&lt;br /&gt;
#BOOT&lt;br /&gt;
#*Drives SM16306SJ (shift register) latch enable (LE) Z to prevent bus contention with programmer&lt;br /&gt;
#**SR output is shared with one of the WCH-Link pins (SWDCLK/SWDIO, forget which)&lt;br /&gt;
#**U5 pin 4&lt;br /&gt;
#**SM16306SJ - serial to parallel shift register / LED driver? Datasheet: [https://datasheet.lcsc.com/lcsc/2105241639_Shenzhen-Sunmoon-Micro-SM16306S_C2830324.pdf] Product page: [https://www.lcsc.com/product-detail/LED-Drivers_Shenzhen-Sunmoon-Micro-SM16306S_C2830324.html]&lt;br /&gt;
#**4 =&amp;gt; LE&lt;br /&gt;
#**BOOT1 ???&lt;br /&gt;
#*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boot to high pin =&amp;gt; seems to enable USB even with SWD plugged in&lt;br /&gt;
&lt;br /&gt;
  ID 4348:55e0 WinChipHead&lt;br /&gt;
This is USB bootloader mode&lt;br /&gt;
&lt;br /&gt;
Document at https://raw.githubusercontent.com/openwch/ch32v307/main/EVT/PUB/CH32V30xEVT%20Evaluation%20Board%20Manual.pdf indicates that for USB bootloader mode: &amp;quot;(1) BOOT0 to VCC, BOOT1 to the ground, connect to PC via serial port or USB&amp;quot;&lt;br /&gt;
&lt;br /&gt;
WCHISPStudio/WCHISPTool (the separate programming tool, accessible via Tools-&amp;gt;WCH In-System Programmer in the IDE) sees the device when jumpered this way. The IDE doesn&#039;t, so it might be necessary to use this tool to do the programming.&lt;br /&gt;
&lt;br /&gt;
== Dev flow ==&lt;br /&gt;
https://github.com/davidcarne/t48-dummy-c-program&lt;br /&gt;
&lt;br /&gt;
Sample flow for Linux doing LED blink&lt;br /&gt;
&lt;br /&gt;
==Unbrick==&lt;br /&gt;
&lt;br /&gt;
In theory we have all firmware (system ROM, bootloader, main firmware) and should be able to unbrick devices. However, I was unable to restore my devices&lt;br /&gt;
&lt;br /&gt;
Theory: unrick issue is firmware is not at correct .hex location. Things that didn&#039;t seem to work to get firmware .hex file:&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --set-start 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --change-addresses 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex  &lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex t48_bootrom_2022-06-30.bin temp.hex&lt;br /&gt;
  objcopy --change-addresses 0x08000000 temp.hex t48_bootrom_2022-06-30.hex&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=929</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=929"/>
		<updated>2022-12-21T19:14:51Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===WCH-link===&lt;br /&gt;
&lt;br /&gt;
Debug header&lt;br /&gt;
&lt;br /&gt;
#BO&lt;br /&gt;
#*94 BOOT0&lt;br /&gt;
#3V3&lt;br /&gt;
#*no 3.3V on PCB. I guess connect to WCH-Link 3V3?&lt;br /&gt;
#SWDCLK&lt;br /&gt;
#*PA14/SWCLK&lt;br /&gt;
#SWDIO&lt;br /&gt;
#*PA13/SWDIO&lt;br /&gt;
#ground&lt;br /&gt;
#BOOT&lt;br /&gt;
#*Drives SM16306SJ (shift register) latch enable (LE) Z to prevent bus contention with programmer&lt;br /&gt;
#**SR output is shared with one of the WCH-Link pins (SWDCLK/SWDIO, forget which)&lt;br /&gt;
#**U5 pin 4&lt;br /&gt;
#**SM16306SJ - serial to parallel shift register / LED driver? Datasheet: [https://datasheet.lcsc.com/lcsc/2105241639_Shenzhen-Sunmoon-Micro-SM16306S_C2830324.pdf] Product page: [https://www.lcsc.com/product-detail/LED-Drivers_Shenzhen-Sunmoon-Micro-SM16306S_C2830324.html]&lt;br /&gt;
#**4 =&amp;gt; LE&lt;br /&gt;
#**BOOT1 ???&lt;br /&gt;
#*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boot to high pin =&amp;gt; seems to enable USB even with SWD plugged in&lt;br /&gt;
&lt;br /&gt;
  ID 4348:55e0 WinChipHead&lt;br /&gt;
This is USB bootloader mode&lt;br /&gt;
&lt;br /&gt;
Document at https://raw.githubusercontent.com/openwch/ch32v307/main/EVT/PUB/CH32V30xEVT%20Evaluation%20Board%20Manual.pdf indicates that for USB bootloader mode: &amp;quot;(1) BOOT0 to VCC, BOOT1 to the ground, connect to PC via serial port or USB&amp;quot;&lt;br /&gt;
&lt;br /&gt;
WCHISPStudio/WCHISPTool (the separate programming tool, accessible via Tools-&amp;gt;WCH In-System Programmer in the IDE) sees the device when jumpered this way. The IDE doesn&#039;t, so it might be necessary to use this tool to do the programming.&lt;br /&gt;
===Unbrick===&lt;br /&gt;
&lt;br /&gt;
In theory we have all firmware (system ROM, bootloader, main firmware) and should be able to unbrick devices. However, I was unable to restore my devices&lt;br /&gt;
&lt;br /&gt;
Theory: unrick issue is firmware is not at correct .hex location. Things that didn&#039;t seem to work to get firmware .hex file:&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --set-start 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --change-addresses 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex  &lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex t48_bootrom_2022-06-30.bin temp.hex&lt;br /&gt;
  objcopy --change-addresses 0x08000000 temp.hex t48_bootrom_2022-06-30.hex&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=924</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=924"/>
		<updated>2022-12-21T06:05:51Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== WCH-link ===&lt;br /&gt;
&lt;br /&gt;
Debug header&lt;br /&gt;
# BO&lt;br /&gt;
#* 94 BOOT0&lt;br /&gt;
# 3V3&lt;br /&gt;
#* no 3.3V on PCB. I guess connect to WCH-Link 3V3?&lt;br /&gt;
# SWDCLK&lt;br /&gt;
#* PA14/SWCLK&lt;br /&gt;
# SWDIO&lt;br /&gt;
#* PA13/SWDIO&lt;br /&gt;
# ground&lt;br /&gt;
# BOOT&lt;br /&gt;
#* U5 pin 4&lt;br /&gt;
#* SM16306SJ&lt;br /&gt;
#* https://www.lcsc.com/product-detail/LED-Drivers_Shenzhen-Sunmoon-Micro-SM16306S_C2830324.html&lt;br /&gt;
#* 4 =&amp;gt; LE&lt;br /&gt;
#* BOOT1?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boot to high pin =&amp;gt; seems to enable USB even with SWD plugged in&lt;br /&gt;
&lt;br /&gt;
What exactly is this? &lt;br /&gt;
&lt;br /&gt;
  ID 4348:55e0 WinChipHead&lt;br /&gt;
&lt;br /&gt;
I think this is WchLink built into chip?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unbrick ===&lt;br /&gt;
&lt;br /&gt;
In theory we have all firmware (system ROM, bootloader, main firmware) and should be able to unbrick devices. However, I was unable to restore my devices&lt;br /&gt;
&lt;br /&gt;
Theory: unrick issue is firmware is not at correct .hex location. Things that didn&#039;t seem to work to get firmware .hex file:&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --set-start 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --change-addresses 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex  &lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex t48_bootrom_2022-06-30.bin temp.hex&lt;br /&gt;
  objcopy --change-addresses 0x08000000 temp.hex t48_bootrom_2022-06-30.hex&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=923</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=923"/>
		<updated>2022-12-21T06:04:12Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== WCH-link ===&lt;br /&gt;
&lt;br /&gt;
Debug header&lt;br /&gt;
# BO&lt;br /&gt;
#* 94 BOOT0&lt;br /&gt;
# 3V3&lt;br /&gt;
#* no 3.3V on PCB. I guess connect to WCH-Link 3V3?&lt;br /&gt;
# SWDCLK&lt;br /&gt;
#* PA14/SWCLK&lt;br /&gt;
# SWDIO&lt;br /&gt;
#* PA13/SWDIO&lt;br /&gt;
# ground&lt;br /&gt;
# BOOT&lt;br /&gt;
#* U5 pin 4&lt;br /&gt;
#* SM16306SJ&lt;br /&gt;
#* https://www.lcsc.com/product-detail/LED-Drivers_Shenzhen-Sunmoon-Micro-SM16306S_C2830324.html&lt;br /&gt;
#* 4 =&amp;gt; LE&lt;br /&gt;
#* BOOT1?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boot to high pin =&amp;gt; seems to enable USB even with SWD plugged in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unbrick ===&lt;br /&gt;
&lt;br /&gt;
In theory we have all firmware (system ROM, bootloader, main firmware) and should be able to unbrick devices. However, I was unable to restore my devices&lt;br /&gt;
&lt;br /&gt;
Theory: unrick issue is firmware is not at correct .hex location. Things that didn&#039;t seem to work to get firmware .hex file:&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --set-start 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --change-addresses 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex  &lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex t48_bootrom_2022-06-30.bin temp.hex&lt;br /&gt;
  objcopy --change-addresses 0x08000000 temp.hex t48_bootrom_2022-06-30.hex&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=922</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=922"/>
		<updated>2022-12-21T06:03:14Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== WCH-link ===&lt;br /&gt;
&lt;br /&gt;
Debug header&lt;br /&gt;
# BO&lt;br /&gt;
# 3V3&lt;br /&gt;
#* no 3.3V on PCB. I guess connect to WCH-Link 3V3?&lt;br /&gt;
# SWDCLK&lt;br /&gt;
# SWDIO&lt;br /&gt;
# ground&lt;br /&gt;
# BOOT&lt;br /&gt;
#* U5 pin 4&lt;br /&gt;
#* SM16306SJ&lt;br /&gt;
#* https://www.lcsc.com/product-detail/LED-Drivers_Shenzhen-Sunmoon-Micro-SM16306S_C2830324.html&lt;br /&gt;
#* 4 =&amp;gt; LE&lt;br /&gt;
#* BOOT1?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Package pin assignment&lt;br /&gt;
* PA13/SWDIO&lt;br /&gt;
* PA14/SWCLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boot to high pin =&amp;gt; seems to enable USB even with SWD plugged in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unbrick ===&lt;br /&gt;
&lt;br /&gt;
In theory we have all firmware (system ROM, bootloader, main firmware) and should be able to unbrick devices. However, I was unable to restore my devices&lt;br /&gt;
&lt;br /&gt;
Theory: unrick issue is firmware is not at correct .hex location. Things that didn&#039;t seem to work to get firmware .hex file:&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --set-start 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --change-addresses 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex  &lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex t48_bootrom_2022-06-30.bin temp.hex&lt;br /&gt;
  objcopy --change-addresses 0x08000000 temp.hex t48_bootrom_2022-06-30.hex&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=921</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=921"/>
		<updated>2022-12-21T06:02:17Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== WCH-link ===&lt;br /&gt;
&lt;br /&gt;
Debug header&lt;br /&gt;
# BO&lt;br /&gt;
# 3V3&lt;br /&gt;
#* no 3.3V on PCB. I guess connect to WCH-Link 3V3?&lt;br /&gt;
# SWDCLK&lt;br /&gt;
# SWDIO&lt;br /&gt;
# ground&lt;br /&gt;
# BOOT&lt;br /&gt;
#* BOOT1?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Package pin assignment&lt;br /&gt;
* PA13/SWDIO&lt;br /&gt;
* PA14/SWCLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boot to high pin =&amp;gt; seems to enable USB even with SWD plugged in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unbrick ===&lt;br /&gt;
&lt;br /&gt;
In theory we have all firmware (system ROM, bootloader, main firmware) and should be able to unbrick devices. However, I was unable to restore my devices&lt;br /&gt;
&lt;br /&gt;
Theory: unrick issue is firmware is not at correct .hex location. Things that didn&#039;t seem to work to get firmware .hex file:&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --set-start 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --change-addresses 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex  &lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex t48_bootrom_2022-06-30.bin temp.hex&lt;br /&gt;
  objcopy --change-addresses 0x08000000 temp.hex t48_bootrom_2022-06-30.hex&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=920</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=920"/>
		<updated>2022-12-21T06:01:43Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== WCH-link ===&lt;br /&gt;
&lt;br /&gt;
Debug header&lt;br /&gt;
# BO&lt;br /&gt;
# 3V3&lt;br /&gt;
** no 3.3V on PCB. I guess connect to WCH-Link 3V3?&lt;br /&gt;
# SWDCLK&lt;br /&gt;
# SWDIO&lt;br /&gt;
# ground&lt;br /&gt;
# BOOT&lt;br /&gt;
** BOOT1?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Package pin assignment&lt;br /&gt;
* PA13/SWDIO&lt;br /&gt;
* PA14/SWCLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boot to high pin =&amp;gt; seems to enable USB even with SWD plugged in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unbrick ===&lt;br /&gt;
&lt;br /&gt;
In theory we have all firmware (system ROM, bootloader, main firmware) and should be able to unbrick devices. However, I was unable to restore my devices&lt;br /&gt;
&lt;br /&gt;
Theory: unrick issue is firmware is not at correct .hex location. Things that didn&#039;t seem to work to get firmware .hex file:&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --set-start 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --change-addresses 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex  &lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex t48_bootrom_2022-06-30.bin temp.hex&lt;br /&gt;
  objcopy --change-addresses 0x08000000 temp.hex t48_bootrom_2022-06-30.hex&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=919</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=919"/>
		<updated>2022-12-21T06:01:31Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== WCH-link ===&lt;br /&gt;
&lt;br /&gt;
Debug header&lt;br /&gt;
# BO&lt;br /&gt;
# 3V3&lt;br /&gt;
  * no 3.3V on PCB. I guess connect to WCH-Link 3V3?&lt;br /&gt;
# SWDCLK&lt;br /&gt;
# SWDIO&lt;br /&gt;
# ground&lt;br /&gt;
# BOOT&lt;br /&gt;
  * BOOT1?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Package pin assignment&lt;br /&gt;
* PA13/SWDIO&lt;br /&gt;
* PA14/SWCLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boot to high pin =&amp;gt; seems to enable USB even with SWD plugged in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unbrick ===&lt;br /&gt;
&lt;br /&gt;
In theory we have all firmware (system ROM, bootloader, main firmware) and should be able to unbrick devices. However, I was unable to restore my devices&lt;br /&gt;
&lt;br /&gt;
Theory: unrick issue is firmware is not at correct .hex location. Things that didn&#039;t seem to work to get firmware .hex file:&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --set-start 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex&lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex --change-addresses 0x08000000 t48_bootrom_2022-06-30.bin t48_bootrom_2022-06-30.hex  &lt;br /&gt;
&lt;br /&gt;
  objcopy --input-target=binary --output-target=ihex t48_bootrom_2022-06-30.bin temp.hex&lt;br /&gt;
  objcopy --change-addresses 0x08000000 temp.hex t48_bootrom_2022-06-30.hex&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=918</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=918"/>
		<updated>2022-12-21T05:58:04Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Unbrick ===&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=T48&amp;diff=917</id>
		<title>T48</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=T48&amp;diff=917"/>
		<updated>2022-12-21T05:56:23Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: Created page with &amp;quot;Test&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=916</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=916"/>
		<updated>2022-12-21T05:56:15Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*[[T48]] universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
**Also known as autoelectric, but this name seems to have fallen out of use&lt;br /&gt;
*minipro: software to control TL866 hardware&lt;br /&gt;
**Notably the proprietary Windows software, but the Linux FOSS CLI software is also called &amp;quot;minipro&amp;quot;&lt;br /&gt;
**Confusingly the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|N*&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|FOSS firmware: some progress was made, but generally abandoned in favor of T48/T56&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307VCT6&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
*FOSS CLI: https://gitlab.com/DavidGriffith/minipro/&lt;br /&gt;
*FOSS firmware: https://github.com/JohnDMcMaster/open-tl866/&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=RF-3148_Supported_Devices&amp;diff=915</id>
		<title>RF-3148 Supported Devices</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=RF-3148_Supported_Devices&amp;diff=915"/>
		<updated>2022-11-14T21:26:21Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
RF.INF&lt;br /&gt;
&lt;br /&gt;
RFA.INF&lt;br /&gt;
&lt;br /&gt;
==PAL==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Vendor&lt;br /&gt;
!Product&lt;br /&gt;
!Read&lt;br /&gt;
Secure&lt;br /&gt;
!Special&lt;br /&gt;
Protect&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=RF-3148_Supported_Devices&amp;diff=914</id>
		<title>RF-3148 Supported Devices</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=RF-3148_Supported_Devices&amp;diff=914"/>
		<updated>2022-11-14T21:07:02Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RF.INF&lt;br /&gt;
&lt;br /&gt;
RFA.INF&lt;br /&gt;
&lt;br /&gt;
== PAL ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Vendor&lt;br /&gt;
!Product&lt;br /&gt;
!Read&lt;br /&gt;
Secure&lt;br /&gt;
!Special&lt;br /&gt;
Protect&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=RF-3148_Supported_Devices&amp;diff=913</id>
		<title>RF-3148 Supported Devices</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=RF-3148_Supported_Devices&amp;diff=913"/>
		<updated>2022-11-14T19:07:11Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: Created page with &amp;quot;sdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sdf&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=RunFei&amp;diff=912</id>
		<title>RunFei</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=RunFei&amp;diff=912"/>
		<updated>2022-11-14T19:07:03Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:RunFei]]&lt;br /&gt;
[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
These programmers are notable for containing functions to read out protected ICs (via gentle voltage glitching) and permanently destroy test circuitry to prevent security voltage glitching (via strong voltage glitching)&lt;br /&gt;
&lt;br /&gt;
was: http://www.runfei.com.cn . According to archive.org, the website was active from roughly 2000 to 2008. From archive.org:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beijing Xinrunfei Electronic Technology Co., Ltd. (formerly Beijing Runfei Electric Co., Ltd.) developed and produced RF-1800, RF810, RF-1848 USB intelligent universal programmers since 1998, 1999, and 2002&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=RF-910=&lt;br /&gt;
&lt;br /&gt;
In 2018 [https://www.vipprogrammer.com/runfei-m-25 RF-910 for sale for $85]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RF-1800=&lt;br /&gt;
&lt;br /&gt;
RF-1800/810 manual: http://web.archive.org/web/20110313101116/http://www.runfei.com.cn:80/software/rf.doc&lt;br /&gt;
&lt;br /&gt;
In 2018 [https://www.vipprogrammer.com/runfei-m-25 RF-1800 for sale for $179]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RF-2148=&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Luckily the PLDs were early GALs which could have their code extracted using a Run-Fei RF-2148USB IC programmer. The software for the programmer allows for some early PLDs with security issues to be copied regardless of the security bit being set. Henry was in luck and was able to read and duplicate all the PLDs for this board.&amp;quot; https://wiki.reactivemicro.com/GS-RAM_Plus&lt;br /&gt;
&lt;br /&gt;
Lord_Nightmare: &amp;quot;...the rf-2148 (which runfei &#039;recalled&#039; and had some very broken english explanation why)...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
balrog: &amp;quot;if you can fine an rf-2148 it doesn’t need the [K51 special protect] adapter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RF-3148=&lt;br /&gt;
&lt;br /&gt;
https://www.vipprogrammer.com/rf3148-usb-universal-programmer-intelligent-chip-tester-programmer-784&lt;br /&gt;
&lt;br /&gt;
&amp;quot;this (no longer available) RunFei RF-3148 programmer I have has a &amp;quot;Read secured IC&amp;quot; function and a &amp;quot;Special protect&amp;quot; function for at89c52. however the documentation indicates that the latter requires an [K51] adapter that&#039;s unobtainium. there&#039;s two claimed additional security measures for at89c5x: &amp;quot;otp security&amp;quot; and &amp;quot;data line killing&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[RF-3148 Supported Devices]]&lt;br /&gt;
&lt;br /&gt;
[[File:runfei_3148_other_menu.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:runfei_3148_protect_dialogue.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:runfei_3148_unsecure_dialogue.png]]&lt;br /&gt;
&lt;br /&gt;
In 2018 [https://www.vipprogrammer.com/runfei-m-25 RF-3148 for sale for $229]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://www.tradekorea.com/product/detail/P575662/RF-3148-USB-Universal-programmer-intelligent-Chip-Tester.html&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;RF-3148 usb programmer is full drive intelligent general programmer, it brings together xinrun fly more than ten years experience in design development, periof two years development accomplish. &lt;br /&gt;
&lt;br /&gt;
elaborate the products with all kinds of device programming needed all drive resource, including 48pin socket, road power supply voltage, burn programmed write voltage controlled programmed / i o signal, revisions, bordels oscillation clock, noise filter, surge strangulating etc, user secondary hardware ( adapter input ) reduses to minimum overhead .&lt;br /&gt;
&lt;br /&gt;
attainment approximation &#039;s burning speed, automatically detect pin access to undesirable, ensure the programming safe and efficient, all power device used low manufacturing, abopt lower power consumption. complete mainframe usb mouth power supply work, circumscribing forsook the / ac dc adapter, making machine weight lighter and more small, easy to carry .&lt;br /&gt;
&lt;br /&gt;
support eeprom: PLD: GAL, ATF, PALCE, PEEL; EPROM: serial port and parallel por EEPROM; FLASHROM, MPU: 51 serial（87C, 97C, W78/77, AT89C/87F/80F, P89C, SST89C, IS89,P87LPC7XX…… ）, AT90S,ATTINY, ATMEGA, PIC12/16/17, EM78P, MDT20, Z86E……&lt;br /&gt;
&lt;br /&gt;
Test support: TTL74/54 serial, CMOS40/45 serial, SRAM, 8155, 8255, 8253, 6821, subscriber can test vector table expand test model &lt;br /&gt;
&lt;br /&gt;
special: encryption can to at89 series mcu, carry on otp recoverability don&#039;t encryption, the use of safe and reliable two step encryption way, encryption after not affect the bus function &lt;br /&gt;
&lt;br /&gt;
direct reading: decryption can to GAL16V8/A/B、20V8/A/B、22V10/B、PALCE16V8H/20V8H direct reading of declassified, and have &amp;quot;door touchdowns fuse-element map &amp;quot; to &amp;quot; logic expression &amp;quot; automatic conversion function.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Final software release from archive.org page:&lt;br /&gt;
&lt;br /&gt;
https://web.archive.org/web/20080225150423/http://www.runfei.com.cn/new_page_2.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RF-3148(USB) software	Chinese and English Win98/me/NT/W2K/XP software	Publication date: 2008.02.20&lt;br /&gt;
&lt;br /&gt;
RF-2148(USB) software	Chinese and English Win98/me/NT/W2K/XP software	Publication date: 2008.02.20 (Old users need to upgrade the USB driver)&lt;br /&gt;
&lt;br /&gt;
RF-2148(PRT) software	Chinese and English Win98/me/NT/W2K/XP software	Publication date: 2008.02.20&lt;br /&gt;
&lt;br /&gt;
RF-1800mini(USB) software	Chinese and English Win98/me/NT/W2K/XP software	Publication date: 2008.02.20&lt;br /&gt;
&lt;br /&gt;
RF-910(USB) software	Chinese and English Win98/me/NT/W2K/XP software	Publication date: 2008.02.20&lt;br /&gt;
&lt;br /&gt;
RF-1800mini software	Chinese and English Win95/98/me/NT/W2K/XP software	Publication date: 2007.06.18&lt;br /&gt;
&lt;br /&gt;
RF-910 software	Chinese and English Win95/98/me/NT/W2K/XP software	Publication date: 2007.06.18&lt;br /&gt;
&lt;br /&gt;
RF-1800 software	DOS version software	Publication date: 2000.4.28&lt;br /&gt;
&lt;br /&gt;
RF-1800 software	Full Chinese Win95/98/me/NT/W2K/XP software	Publication date: 2003.3.26&lt;br /&gt;
&lt;br /&gt;
RF-810 software	DOS version software	Publication date: 2000.4.28&lt;br /&gt;
&lt;br /&gt;
RF-810 software	Full Chinese Win95/98/me/NT/W2K/XP software	Publication date: 2003.3.31&lt;br /&gt;
&lt;br /&gt;
RF-510 software	Full Chinese Win95/98/me/NT/W2K/XP software	Publication date: 2003.3.31&lt;br /&gt;
&lt;br /&gt;
RF-1600 Software	DOS version software	Publication date: 1999.7.8&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=911</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=911"/>
		<updated>2022-11-09T19:53:49Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
**Also known as autoelectric, but this name seems to have fallen out of use&lt;br /&gt;
*minipro: software to control TL866 hardware&lt;br /&gt;
**Notably the proprietary Windows software, but the Linux FOSS CLI software is also called &amp;quot;minipro&amp;quot;&lt;br /&gt;
**Confusingly the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|N*&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|FOSS firmware: some progress was made, but generally abandoned in favor of T48/T56&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307VCT6&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
*FOSS CLI: https://gitlab.com/DavidGriffith/minipro/&lt;br /&gt;
*FOSS firmware: https://github.com/JohnDMcMaster/open-tl866/&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=910</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=910"/>
		<updated>2022-11-08T02:25:28Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
**Also known as autoelectric, but this name seems to have fallen out of use&lt;br /&gt;
*minipro: software to control TL866 hardware&lt;br /&gt;
**Notably the proprietary Windows software, but the Linux FOSS CLI software is also called &amp;quot;minipro&amp;quot;&lt;br /&gt;
**Confusingly the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|N*&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|FOSS firmware: some progress was made, but generally abandoned in favor of T48/T56&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
*FOSS CLI: https://gitlab.com/DavidGriffith/minipro/&lt;br /&gt;
*FOSS firmware: https://github.com/JohnDMcMaster/open-tl866/&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=909</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=909"/>
		<updated>2022-11-08T02:24:31Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware&lt;br /&gt;
**Notably the proprietary Windows software, but the Linux FOSS CLI software is also called &amp;quot;minipro&amp;quot;&lt;br /&gt;
**Confusingly the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|N*&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|FOSS firmware: some progress was made, but generally abandoned in favor of T48/T56&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
*FOSS CLI: https://gitlab.com/DavidGriffith/minipro/&lt;br /&gt;
*FOSS firmware: https://github.com/JohnDMcMaster/open-tl866/&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=908</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=908"/>
		<updated>2022-11-08T02:22:48Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware&lt;br /&gt;
**Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
**The Linux CLI software is also called &amp;quot;minipro&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|N*&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|FOSS firmware: some progress was made, but generally abandoned in favor of T48/T56&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
*FOSS CLI: https://gitlab.com/DavidGriffith/minipro/&lt;br /&gt;
*FOSS firmware: https://github.com/JohnDMcMaster/open-tl866/&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=Bitrot&amp;diff=903</id>
		<title>Bitrot</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=Bitrot&amp;diff=903"/>
		<updated>2022-08-26T23:46:25Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Techniques for dumping bit-rotten and/or damaged EPROMs:&lt;br /&gt;
&lt;br /&gt;
Bit-rotten roms are EPROMs/EEPROMs/flash where the floating gate charges have decayed from age/light exposure below the threshold to reliably read as the &#039;high&#039; state. On most EPROM based devices, a high floating gate charge indicates a 0 bit, so this means the values will read as 0xFF instead of the proper value.&lt;br /&gt;
&lt;br /&gt;
There are several techniques to try to recover bit-rotten data like this:&lt;br /&gt;
&lt;br /&gt;
Change temperature. Ex: People have reported success using a hair dryer or heat-gun on parts. This seems to work better than freezing parts does, maybe by &#039;boosting&#039; via thermal noise the floating gate charge readout value?&lt;br /&gt;
Lower reference voltage: Lowering the VCC/Reference voltage from 5v to below 4.97v or so lowers the &#039;threshold&#039; for reading back floating gate charges, which can recover some bits which are just below the threshold. Too low of a voltage may make the chip malfunction, too high will not have any effect. To prevent potential damage to the chip by having address/control lines driven higher than VCC, the reference input &#039;high&#039; (ViH) voltage for all pins should be lowered simultaneously, but this might not always be necessary.&lt;br /&gt;
Multiple reads and binary ANDing or &#039;voting&#039; of the bits: dumping a chip several dozen/hundred times and having each dump &#039;vote&#039; for whether a given bit is 1 or 0, the most popular votes winning. Binary AND is simpler, but this causes problems if a bit should read as 1 and erratically reads as 0.&lt;br /&gt;
&lt;br /&gt;
Combining 2 or more of these techniques is significantly more effective than using them separately, so people have had much better luck both heating and simultaneously under-volting chips than doing either one separately.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damaged Chips:&lt;br /&gt;
&lt;br /&gt;
There are more or less two classes of damage to an IC which will prevent it from reading: Damage to the leadframe and bond wires, and damage to the die itself.&lt;br /&gt;
&lt;br /&gt;
Heat might help for leadframe/bond wire damage (if it cannot be directly/permanently repaired with conductive epoxy or solder, etc) as it may make the metal expand enough to make contact with the other side it was broken off of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voltage injection&lt;br /&gt;
&lt;br /&gt;
https://twitter.com/Manawyrm/status/1563178483165016065&lt;br /&gt;
&lt;br /&gt;
==McMaster - Phil B experiment 2019==&lt;br /&gt;
Took 3 bit rotted (sunlight exposure?) EPROMs and tried to recover bits. Used [[TL866#External VDD control|modified TL866]] to control VDD during readout. One of the EPROMs had a largish &amp;quot;sweet spot&amp;quot; that resulted in stable readout. However, Phil was unable to confirm that the dump improved data quality. Its unclear to me (McMaster) if the data was actually not good or that it was simply hard to tell if it had been improved.&lt;br /&gt;
==See also==&lt;br /&gt;
[[EPROM]]: has some (limited) information on EPROM erase profiles. Might be useful for understanding sunlight damage profiles&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=902</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=902"/>
		<updated>2022-08-24T06:26:07Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|N*&lt;br /&gt;
|[https://github.com/radiomanV/TL866/tree/master/docs Y]&lt;br /&gt;
|FOSS firmware: some progress was made, but generally abandoned in favor of T48/T56&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
*FOSS CLI: https://gitlab.com/DavidGriffith/minipro/&lt;br /&gt;
*FOSS firmware: https://github.com/JohnDMcMaster/open-tl866/&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=901</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=901"/>
		<updated>2022-08-24T05:55:12Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|N*&lt;br /&gt;
|&lt;br /&gt;
|FOSS firmware: some progress was made, but generally abandoned in favor of T48/T56&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|N&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
*FOSS CLI: https://gitlab.com/DavidGriffith/minipro/&lt;br /&gt;
*FOSS firmware: https://github.com/JohnDMcMaster/open-tl866/&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=900</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=900"/>
		<updated>2022-08-24T05:50:57Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|N*&lt;br /&gt;
|&lt;br /&gt;
|FOSS firmware: some progress was made, but generally abandoned in favor of T48/T56&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
* FOSS CLI: https://gitlab.com/DavidGriffith/minipro/&lt;br /&gt;
* FOSS firmware: https://github.com/JohnDMcMaster/open-tl866/&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=899</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=899"/>
		<updated>2022-08-24T05:49:35Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/269 N]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|[https://gitlab.com/DavidGriffith/minipro/-/issues/174 N]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=898</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=898"/>
		<updated>2022-08-24T05:09:53Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=897</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=897"/>
		<updated>2022-08-24T05:09:17Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC18F87J50&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|PIC24FJ256&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|CH32V307&lt;br /&gt;
|N/A&lt;br /&gt;
|Y&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CPU from McMaster teardown&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|PIC32&lt;br /&gt;
|Spartan 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Board info: https://www.youtube.com/watch?v=PHD7OXDYzrQ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=896</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=896"/>
		<updated>2022-08-24T05:05:43Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
XGecu is a line of programmers from Haikou Xingong Electronics Co.,Ltd. Their devices include:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comparison ==&lt;br /&gt;
They have a table on their website: http://www.xgecu.com/&lt;br /&gt;
&lt;br /&gt;
Some additional info below&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!Socket&lt;br /&gt;
!Other port&lt;br /&gt;
!CPU&lt;br /&gt;
!FPGA&lt;br /&gt;
!FOSS&lt;br /&gt;
CLI&lt;br /&gt;
!FOSS&lt;br /&gt;
firmware&lt;br /&gt;
!Schematic&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|TL866A&lt;br /&gt;
TL866CS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|TL866A and TL866CS are same hardware w/ different software&lt;br /&gt;
|-&lt;br /&gt;
|TL866 II PLUS&lt;br /&gt;
|DIP40&lt;br /&gt;
|ICSP&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|T48&lt;br /&gt;
|DIP40&lt;br /&gt;
|something&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|T56&lt;br /&gt;
|DIP48&lt;br /&gt;
|something else&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=Haikou_Xingong_Electronics&amp;diff=895</id>
		<title>Haikou Xingong Electronics</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=Haikou_Xingong_Electronics&amp;diff=895"/>
		<updated>2022-08-24T04:57:32Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: Mcmaster moved page Haikou Xingong Electronics to XGecu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[XGecu]]&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=894</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=894"/>
		<updated>2022-08-24T04:57:32Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: Mcmaster moved page Haikou Xingong Electronics to XGecu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
Autoelectric is a Chinese firm that produces the following devices:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=893</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=893"/>
		<updated>2022-08-24T04:57:23Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
Autoelectric is a Chinese firm that produces the following devices:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong including TL866, TL866II, T48, and T56&lt;br /&gt;
*minipro: software to control TL866 hardware. Although the original TL866 also says &amp;quot;minipro&amp;quot; on it&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=892</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=892"/>
		<updated>2022-08-24T04:56:00Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
Autoelectric is a Chinese firm that produces the following devices:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T48 universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*Haikou Xingong Electronics Co.,Ltd: official company name&lt;br /&gt;
*XGecu: line of programmers made by Haikou Xingong&lt;br /&gt;
*TL866: hardware device&lt;br /&gt;
*minipro: software to control TL866 hardware&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=Autoelectric&amp;diff=891</id>
		<title>Autoelectric</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=Autoelectric&amp;diff=891"/>
		<updated>2022-08-24T04:54:58Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: Mcmaster moved page Autoelectric to Haikou Xingong Electronics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Haikou Xingong Electronics]]&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=XGecu&amp;diff=890</id>
		<title>XGecu</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=XGecu&amp;diff=890"/>
		<updated>2022-08-24T04:54:58Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: Mcmaster moved page Autoelectric to Haikou Xingong Electronics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vendor]]&lt;br /&gt;
&lt;br /&gt;
Autoelectric is a Chinese firm that produces the following devices:&lt;br /&gt;
&lt;br /&gt;
*[[TL866]] universal programmer (widely cloned, replaced by the TL866 II PLUS)&lt;br /&gt;
*[[TL866 II PLUS]] universal programmer&lt;br /&gt;
*T56 universal programmer&lt;br /&gt;
*Various CAN bus equipment (out of scope for this wiki)&lt;br /&gt;
&lt;br /&gt;
Glossary:&lt;br /&gt;
&lt;br /&gt;
*XGecu/autoelectric: company name&lt;br /&gt;
*TL866: hardware device&lt;br /&gt;
*minipro: software to control TL866 hardware&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://www.autoelectric.cn autoelectric.cn] (Official site used in TL866 marketing)&lt;br /&gt;
*[http://www.xgecu.com/ xgecu.com] (Official site used in TL866II Plus marketing)&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=889</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=889"/>
		<updated>2022-05-28T21:45:25Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Quick start==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
*Ubuntu 20.04&lt;br /&gt;
*Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
**ATMEGA328P blank / in any state&lt;br /&gt;
*DuPAL power supply and USB serial&lt;br /&gt;
*avrdude compatible programmer&lt;br /&gt;
**I used avrispmkII&lt;br /&gt;
*PAL16L8&lt;br /&gt;
*Optional: tool to flash PAL16L8&lt;br /&gt;
**TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/dupal&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
 wget https://proghq.org/media/dupal/optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
===Quick test===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal-analyzer-0.1.4-5430dab.jar&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab.jar&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
Burn trackstar128_u33_pal16l8a2nc.jed (FIXME: instructions)&lt;br /&gt;
&lt;br /&gt;
 wget https://proghq.org/media/dupal/trackstar128_u33_pal16l8a2nc.jed&lt;br /&gt;
&lt;br /&gt;
Testing:&lt;br /&gt;
&lt;br /&gt;
 Turn off DuPAL&lt;br /&gt;
 Insert PAL into 20 pin socket&lt;br /&gt;
 Turn on DuPAL&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 Both the activity green light and the &amp;quot;20 pin active&amp;quot; LED should turn on&lt;br /&gt;
 Let run. Took just over a minute on my setup&lt;br /&gt;
 Note: .json file will not be produced&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
Now re-run with the suggested mask option:&lt;br /&gt;
&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json 07&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
With no chip in it takes about 9 minutes and gives a mask of 00. Be suspicious if you see this&lt;br /&gt;
&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 00&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 00&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
===MCU===&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;br /&gt;
&lt;br /&gt;
===Analyzer===&lt;br /&gt;
&lt;br /&gt;
 sudo apt install maven&lt;br /&gt;
 mvn compile&lt;br /&gt;
 sudo mvn install&lt;br /&gt;
&lt;br /&gt;
You should now see something like&lt;br /&gt;
&lt;br /&gt;
 $ ls -lah ./target/*.jar&lt;br /&gt;
 -rw-r--r-- 1 root root  51K May 21 14:34 ./target/dupal-analyzer-0.1.4.jar&lt;br /&gt;
 -rw-r--r-- 1 root root 536K May 21 14:35 ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar&lt;br /&gt;
 $ java -jar ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
== Logic minimization ==&lt;br /&gt;
The recommended flow is to use espresso. Unfortunately this program is a bit old and crusty&lt;br /&gt;
&lt;br /&gt;
java -jar target/espresso-converter-0.0.3-jar-with-dependencies.jar ~/doc/ext/dupal/u33.json out.esp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
found this but it crashes under most usage scenarios...I had to work to find something that didn&#039;t&lt;br /&gt;
&lt;br /&gt;
git clone &amp;lt;nowiki&amp;gt;https://github.com/JackHack96/logic-synthesis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=888</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=888"/>
		<updated>2022-05-28T18:50:01Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Quick start==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
*Ubuntu 20.04&lt;br /&gt;
*Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
**ATMEGA328P blank / in any state&lt;br /&gt;
*DuPAL power supply and USB serial&lt;br /&gt;
*avrdude compatible programmer&lt;br /&gt;
**I used avrispmkII&lt;br /&gt;
*PAL16L8&lt;br /&gt;
*Optional: tool to flash PAL16L8&lt;br /&gt;
**TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/dupal&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
 wget https://proghq.org/media/dupal/optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
===Quick test===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
Burn trackstar128_u33_pal16l8a2nc.jed (FIXME: instructions)&lt;br /&gt;
&lt;br /&gt;
 wget https://proghq.org/media/dupal/trackstar128_u33_pal16l8a2nc.jed&lt;br /&gt;
&lt;br /&gt;
Testing:&lt;br /&gt;
&lt;br /&gt;
 Turn off DuPAL&lt;br /&gt;
 Insert PAL into 20 pin socket&lt;br /&gt;
 Turn on DuPAL&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 Both the activity green light and the &amp;quot;20 pin active&amp;quot; LED should turn on&lt;br /&gt;
 Let run. Took just over a minute on my setup&lt;br /&gt;
 Note: .json file will not be produced&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
Now re-run with the suggested mask option:&lt;br /&gt;
&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json 07&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
With no chip in it takes about 9 minutes and gives a mask of 00. Be suspicious if you see this&lt;br /&gt;
&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 00&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 00&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
===MCU===&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;br /&gt;
&lt;br /&gt;
===Analyzer===&lt;br /&gt;
&lt;br /&gt;
 sudo apt install maven&lt;br /&gt;
 mvn compile&lt;br /&gt;
 sudo mvn install&lt;br /&gt;
&lt;br /&gt;
You should now see something like&lt;br /&gt;
&lt;br /&gt;
 $ ls -lah ./target/*.jar&lt;br /&gt;
 -rw-r--r-- 1 root root  51K May 21 14:34 ./target/dupal-analyzer-0.1.4.jar&lt;br /&gt;
 -rw-r--r-- 1 root root 536K May 21 14:35 ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar&lt;br /&gt;
 $ java -jar ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
== Logic minimization ==&lt;br /&gt;
The recommended flow is to use espresso. Unfortunately this program is a bit old and crusty&lt;br /&gt;
&lt;br /&gt;
java -jar target/espresso-converter-0.0.3-jar-with-dependencies.jar ~/doc/ext/dupal/u33.json out.esp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
found this but it crashes under most usage scenarios...I had to work to find something that didn&#039;t&lt;br /&gt;
&lt;br /&gt;
git clone &amp;lt;nowiki&amp;gt;https://github.com/JackHack96/logic-synthesis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=887</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=887"/>
		<updated>2022-05-28T10:20:46Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/dupal&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
 wget https://proghq.org/media/dupal/optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
Burn trackstar128_u33_pal16l8a2nc.jed (FIXME: instructions)&lt;br /&gt;
&lt;br /&gt;
 wget https://proghq.org/media/dupal/trackstar128_u33_pal16l8a2nc.jed&lt;br /&gt;
&lt;br /&gt;
Testing:&lt;br /&gt;
&lt;br /&gt;
 Turn off DuPAL&lt;br /&gt;
 Insert PAL into 20 pin socket&lt;br /&gt;
 Turn on DuPAL&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 Both the activity green light and the &amp;quot;20 pin active&amp;quot; LED should turn on&lt;br /&gt;
 Let run. Took just over a minute on my setup&lt;br /&gt;
 Note: .json file will not be produced&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
Now re-run with the suggested mask option:&lt;br /&gt;
&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json 07&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
With no chip in it takes about 9 minutes and gives a mask of 00. Be suspicious if you see this&lt;br /&gt;
&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 00&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 00&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
=== MCU ===&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;br /&gt;
&lt;br /&gt;
=== Analyzer ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt install maven&lt;br /&gt;
 mvn compile&lt;br /&gt;
 sudo mvn install&lt;br /&gt;
&lt;br /&gt;
You should now see something like&lt;br /&gt;
&lt;br /&gt;
 $ ls -lah ./target/*.jar&lt;br /&gt;
 -rw-r--r-- 1 root root  51K May 21 14:34 ./target/dupal-analyzer-0.1.4.jar&lt;br /&gt;
 -rw-r--r-- 1 root root 536K May 21 14:35 ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar&lt;br /&gt;
 $ java -jar ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=Readpal&amp;diff=886</id>
		<title>Readpal</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=Readpal&amp;diff=886"/>
		<updated>2022-05-28T09:59:55Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: Created page with &amp;quot;Main page: http://techno-junk.org/readpal.php  PCB: https://github.com/pascalorama/paldumper  &amp;lt;br /&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Main page: http://techno-junk.org/readpal.php&lt;br /&gt;
&lt;br /&gt;
PCB: https://github.com/pascalorama/paldumper&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=885</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=885"/>
		<updated>2022-05-24T05:09:57Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/dupal&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
 wget https://proghq.org/media/dupal/optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
Burn trackstar128_u33_pal16l8a2nc.jed (FIXME: instructions)&lt;br /&gt;
&lt;br /&gt;
 wget https://proghq.org/media/dupal/trackstar128_u33_pal16l8a2nc.jed&lt;br /&gt;
&lt;br /&gt;
Testing:&lt;br /&gt;
&lt;br /&gt;
 Turn off DuPAL&lt;br /&gt;
 Insert PAL into 20 pin socket&lt;br /&gt;
 Turn on DuPAL&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 Both the activity green light and the &amp;quot;20 pin active&amp;quot; LED should turn on&lt;br /&gt;
 Let run. Took just over a minute on my setup&lt;br /&gt;
 Note: .json file will not be produced&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
Now re-run with the suggested mask option:&lt;br /&gt;
&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json 07&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
With no chip in it takes about 9 minutes and gives a mask of 00. Be suspicious if you see this&lt;br /&gt;
&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 00&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 00&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
=== MCU ===&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;br /&gt;
&lt;br /&gt;
=== Analyzer ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt install maven&lt;br /&gt;
 nvm compile&lt;br /&gt;
 sudo nvm install&lt;br /&gt;
&lt;br /&gt;
You should now see something like&lt;br /&gt;
&lt;br /&gt;
 $ ls -lah ./target/*.jar&lt;br /&gt;
 -rw-r--r-- 1 root root  51K May 21 14:34 ./target/dupal-analyzer-0.1.4.jar&lt;br /&gt;
 -rw-r--r-- 1 root root 536K May 21 14:35 ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar&lt;br /&gt;
 $ java -jar ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=884</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=884"/>
		<updated>2022-05-21T22:08:50Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/dupal&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
 wget https://proghq.org/media/dupal/optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
Burn trackstar128_u33_pal16l8a2nc.jed (FIXME: instructions)&lt;br /&gt;
&lt;br /&gt;
 wget https://proghq.org/media/dupal/trackstar128_u33_pal16l8a2nc.jed&lt;br /&gt;
&lt;br /&gt;
Testing:&lt;br /&gt;
&lt;br /&gt;
 Turn off DuPAL&lt;br /&gt;
 Insert PAL into 20 pin socket&lt;br /&gt;
 Turn on DuPAL&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 Both the activity green light and the &amp;quot;20 pin active&amp;quot; LED should turn on&lt;br /&gt;
 Let run. Took just over a minute on my setup&lt;br /&gt;
 Note: .json file will not be produced&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
Now re-run with the suggested mask option:&lt;br /&gt;
&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json 07&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
=== MCU ===&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;br /&gt;
&lt;br /&gt;
=== Analyzer ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt install maven&lt;br /&gt;
 nvm compile&lt;br /&gt;
 sudo nvm install&lt;br /&gt;
&lt;br /&gt;
You should now see something like&lt;br /&gt;
&lt;br /&gt;
 $ ls -lah ./target/*.jar&lt;br /&gt;
 -rw-r--r-- 1 root root  51K May 21 14:34 ./target/dupal-analyzer-0.1.4.jar&lt;br /&gt;
 -rw-r--r-- 1 root root 536K May 21 14:35 ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar&lt;br /&gt;
 $ java -jar ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=883</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=883"/>
		<updated>2022-05-21T22:03:18Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/dupal&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
 wget https://proghq.org/media/dupal/optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
Burn trackstar128_u33_pal16l8a2nc.jed (FIXME: instructions)&lt;br /&gt;
&lt;br /&gt;
Testing:&lt;br /&gt;
 Turn off DuPAL&lt;br /&gt;
 Insert PAL into 20 pin socket&lt;br /&gt;
 Turn on DuPAL&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 Both the activity green light and the &amp;quot;20 pin active&amp;quot; LED should turn on&lt;br /&gt;
 Let run. Took just over a minute on my setup&lt;br /&gt;
 Note: .json file will not be produced&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Starting IO type detection... This could take a while.&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - detectIOTypeMask -&amp;gt; Currently detected mask is 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Detected the following IO as Outputs mask: 07&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.board.boardio.DuPALAnalyzer - Now, turn OFF and ON again the DuPAL to reset the PAL and run this tool again by specifying the mask &lt;br /&gt;
 and output file.&lt;br /&gt;
&lt;br /&gt;
Now re-run with the suggested mask option:&lt;br /&gt;
&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar /dev/ttyUSB0 16L8 out.json 07&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
=== MCU ===&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;br /&gt;
&lt;br /&gt;
=== Analyzer ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt install maven&lt;br /&gt;
 nvm compile&lt;br /&gt;
 sudo nvm install&lt;br /&gt;
&lt;br /&gt;
You should now see something like&lt;br /&gt;
&lt;br /&gt;
 $ ls -lah ./target/*.jar&lt;br /&gt;
 -rw-r--r-- 1 root root  51K May 21 14:34 ./target/dupal-analyzer-0.1.4.jar&lt;br /&gt;
 -rw-r--r-- 1 root root 536K May 21 14:35 ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar&lt;br /&gt;
 $ java -jar ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=882</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=882"/>
		<updated>2022-05-21T21:43:30Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/dupal&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
 wget https://proghq.org/media/dupal/optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_v8.0_atmega328_57600.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
 cd ~/dupal&lt;br /&gt;
 wget https://proghq.org/media/dupal/dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
 java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar&lt;br /&gt;
&lt;br /&gt;
Example output:&lt;br /&gt;
&lt;br /&gt;
 $ java -jar dupal-analyzer-0.1.4-5430dab-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
=== MCU ===&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;br /&gt;
&lt;br /&gt;
=== Analyzer ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt install maven&lt;br /&gt;
 nvm compile&lt;br /&gt;
 sudo nvm install&lt;br /&gt;
&lt;br /&gt;
You should now see something like&lt;br /&gt;
&lt;br /&gt;
 $ ls -lah ./target/*.jar&lt;br /&gt;
 -rw-r--r-- 1 root root  51K May 21 14:34 ./target/dupal-analyzer-0.1.4.jar&lt;br /&gt;
 -rw-r--r-- 1 root root 536K May 21 14:35 ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar&lt;br /&gt;
 $ java -jar ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=881</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=881"/>
		<updated>2022-05-21T21:37:17Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_atmega328.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
=== MCU ===&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;br /&gt;
&lt;br /&gt;
=== Analyzer ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt install maven&lt;br /&gt;
 nvm compile&lt;br /&gt;
 sudo nvm install&lt;br /&gt;
&lt;br /&gt;
You should now see something like&lt;br /&gt;
&lt;br /&gt;
 $ ls -lah ./target/*.jar&lt;br /&gt;
 -rw-r--r-- 1 root root  51K May 21 14:34 ./target/dupal-analyzer-0.1.4.jar&lt;br /&gt;
 -rw-r--r-- 1 root root 536K May 21 14:35 ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar&lt;br /&gt;
 $ java -jar ./target/dupal-analyzer-0.1.4-jar-with-dependencies.jar -h&lt;br /&gt;
 [main] INFO info.hkzlab.dupal.analyzer.App - DuPAL Analyzer 0.1.4&lt;br /&gt;
 [main] ERROR info.hkzlab.dupal.analyzer.App - Wrong number of arguments passed.&lt;br /&gt;
 dupal_analyzer &amp;lt;serial_port&amp;gt; &amp;lt;pal_type&amp;gt; [&amp;lt;output_file&amp;gt; hex_output_mask]&lt;br /&gt;
 Where &amp;lt;pal_type&amp;gt; can be:&lt;br /&gt;
 	10L8&lt;br /&gt;
 	12H6&lt;br /&gt;
 	16L8&lt;br /&gt;
 	20L8&lt;br /&gt;
 	16R4&lt;br /&gt;
 	16R6&lt;br /&gt;
 	16R8&lt;br /&gt;
 	20R4&lt;br /&gt;
 	20R6&lt;br /&gt;
 	20R8&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=880</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=880"/>
		<updated>2022-05-21T21:27:29Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install -y avrdude minicom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_atmega328.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 baud using your favorite terminal emulator such as:&lt;br /&gt;
&lt;br /&gt;
 minicom -b 57600 -D /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go! Press ^A and then x to exit minicom&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=879</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=879"/>
		<updated>2022-05-21T21:25:03Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: /* Quick start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install -y avrdude&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_atmega328.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 (ex: screen /dev/ttyUSB0 115200). Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=878</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=878"/>
		<updated>2022-05-21T21:24:54Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quick start ==&lt;br /&gt;
You will need:&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 20.04&lt;br /&gt;
* Assembled DuPAL 2.0 w/ 20 pin ZIF installed&lt;br /&gt;
** ATMEGA328P blank / in any state&lt;br /&gt;
* DuPAL power supply and USB serial&lt;br /&gt;
* avrdude compatible programmer&lt;br /&gt;
** I used avrispmkII&lt;br /&gt;
* PAL16L8&lt;br /&gt;
* Optional: tool to flash PAL16L8&lt;br /&gt;
** TL866 won&#039;t work :(&lt;br /&gt;
&lt;br /&gt;
===Quick flash===&lt;br /&gt;
&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Board main page]&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install -y avrdude&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_atmega328.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 (ex: screen /dev/ttyUSB0 115200). Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
=== Quick test ===&lt;br /&gt;
For more information see the [https://github.com/DuPAL-PAL-DUmper/DuPAL_Analyzer main page]&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=877</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=877"/>
		<updated>2022-05-21T07:02:30Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WIP&lt;br /&gt;
==Quick flash==&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_atmega328.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 (ex: screen /dev/ttyUSB0 115200). Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go&lt;br /&gt;
&lt;br /&gt;
A healthy board should have a steady red power LED and a brief green blink at power on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=876</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=876"/>
		<updated>2022-05-21T06:54:16Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: /* Quick flash */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WIP&lt;br /&gt;
==Quick flash==&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_atmega328.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
Start up a serial port at 57600 (ex: screen /dev/ttyUSB0 115200). Hit &amp;quot;reset&amp;quot; and you should see:&lt;br /&gt;
&lt;br /&gt;
(blinky for a few seconds)&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 DuPAL - 0.1.2&lt;br /&gt;
 &lt;br /&gt;
 REMOTE_CONTROL_ENABLED&lt;br /&gt;
&lt;br /&gt;
If you see this, congrats! your DuPAL is flashed and ready to go&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=875</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=875"/>
		<updated>2022-05-21T06:50:47Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WIP&lt;br /&gt;
==Quick flash==&lt;br /&gt;
&lt;br /&gt;
Pre-compiled hex files: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_atmega328.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=DuPAL&amp;diff=874</id>
		<title>DuPAL</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=DuPAL&amp;diff=874"/>
		<updated>2022-05-21T06:47:45Z</updated>

		<summary type="html">&lt;p&gt;Mcmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WIP&lt;br /&gt;
&lt;br /&gt;
Pre-compiled: https://proghq.org/media/dupal/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quick flash==&lt;br /&gt;
&lt;br /&gt;
ISP connection:&lt;br /&gt;
  * Pin 1 (red stripe in cable) towards crystal&lt;br /&gt;
  * Notch faces towards ATMEGA&lt;br /&gt;
&lt;br /&gt;
You need an avrdude compatible programmer. To see the list of compatible programmers type &lt;br /&gt;
&lt;br /&gt;
 avrdude -c help&lt;br /&gt;
&lt;br /&gt;
Once you know the flag you need, here&#039;s an example assuming avrispmkII:&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -e -u \&lt;br /&gt;
     -U efuse:w:0xFD:m \&lt;br /&gt;
     -U hfuse:w:0xDE:m \&lt;br /&gt;
     -U lfuse:w:0xFF:m \&lt;br /&gt;
     -U flash:w:optiboot_atmega328.hex&lt;br /&gt;
 &lt;br /&gt;
You should see a green blinky LED&lt;br /&gt;
&lt;br /&gt;
 avrdude -v -c avrispmkII -P usb -p atmega328p -u -D \&lt;br /&gt;
     -U flash:w:dupal_v0.1.2.hex&lt;br /&gt;
&lt;br /&gt;
The green blinky might stop. Hit the reset button and it should blink again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Optiboot&lt;br /&gt;
&lt;br /&gt;
 # https://github.com/Optiboot/optiboot&lt;br /&gt;
 &lt;br /&gt;
 # 328P uses 115200?&lt;br /&gt;
 # a few use 57600 but not the one we need :(&lt;br /&gt;
 # wget https://github.com/Optiboot/optiboot/releases/download/v8.0/Optiboot-8.0.zip&lt;br /&gt;
 &lt;br /&gt;
 git clone https://github.com/Optiboot/optiboot.git&lt;br /&gt;
 cd optiboot&lt;br /&gt;
 git checkout -b v8.0 v8.0&lt;br /&gt;
 cd bootloaders/optiboot&lt;br /&gt;
 make atmega328 AVR_FREQ=20000000L LED_START_FLASHES=8 BAUD_RATE=57600&lt;br /&gt;
 # sha1sum optiboot_atmega328.hex&lt;br /&gt;
 # 8a16ce8d98d7bf002c54c7aa911bfd124d9e1961  optiboot_atmega328.hex&lt;br /&gt;
&lt;br /&gt;
Flash optiboot. Example CLI to use ISP header, but can also put into tl866 etc&lt;br /&gt;
&lt;br /&gt;
Sample command line:&lt;br /&gt;
&lt;br /&gt;
[[DuPAL optiboot flash output|Sample output]]&lt;br /&gt;
&lt;br /&gt;
Originally I tried using BP Microsystems but didn&#039;t work (fuses not set right?). I then flashed using avrdude / header and worked (green LED blinking).&lt;br /&gt;
&lt;br /&gt;
TODO: dump end flash so can program using bp&lt;br /&gt;
&lt;br /&gt;
 cd DuPAL_Firmware&lt;br /&gt;
 make&lt;br /&gt;
 make program&lt;/div&gt;</summary>
		<author><name>Mcmaster</name></author>
	</entry>
</feed>