

<?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=RH</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=RH"/>
	<link rel="alternate" type="text/html" href="https://proghq.org/wiki/Special:Contributions/RH"/>
	<updated>2026-04-15T04:12:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://proghq.org/w/index.php?title=BPM_WWAVUSBEPP_LA&amp;diff=941</id>
		<title>BPM WWAVUSBEPP LA</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=BPM_WWAVUSBEPP_LA&amp;diff=941"/>
		<updated>2023-05-01T00:45:07Z</updated>

		<summary type="html">&lt;p&gt;RH: Undo revision 940 by RH (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Logic analyzer test&lt;br /&gt;
&lt;br /&gt;
17 signal pins, 16 LA channels.  Arbitrarily drop pin 8 in favor of hooking everything up linearly.&lt;br /&gt;
&lt;br /&gt;
= 2015-09-27 =&lt;br /&gt;
&lt;br /&gt;
Project goal: understand how voltages/currents are read out&lt;br /&gt;
&lt;br /&gt;
== Phase 1: LA ==&lt;br /&gt;
&lt;br /&gt;
Ran into some signal integrity issues setting up capture.  Had to do short wires.  More info:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Final setup&lt;br /&gt;
&#039;&#039;&#039;* [[https:&#039;&#039;twitter.com/johndmcmaster/status/648329962819182592|https:&#039;&#039;twitter.com/johndmcmaster/status/648329962819182592]]&lt;br /&gt;
&#039;&#039;&#039;* [[https:&#039;&#039;twitter.com/johndmcmaster/status/648348769746948097|https:&#039;&#039;twitter.com/johndmcmaster/status/648348769746948097]]&lt;br /&gt;
&#039;&#039;&#039; Flaky: flying leads&lt;br /&gt;
&#039;&#039;&#039;* [[https:&#039;&#039;twitter.com/johndmcmaster/status/648315944121425920|https:&#039;&#039;twitter.com/johndmcmaster/status/648315944121425920]]&lt;br /&gt;
&#039;&#039;&#039; Complete failure: ribbon cable&lt;br /&gt;
&#039;&#039;&#039;* [[https:&#039;&#039;twitter.com/johndmcmaster/status/645354861383385088|https:&#039;&#039;twitter.com/johndmcmaster/status/645354861383385088]]&lt;br /&gt;
&lt;br /&gt;
Setup to trigger on J2.1.  Triggered during startup sequence reading serial number etc&lt;br /&gt;
&lt;br /&gt;
Discovered Saleae only support 8/16 channels with USB 2.  Ordered USB3 expresscard adapter.&lt;br /&gt;
&lt;br /&gt;
SN:&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_21_43_18.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: 1-8 at startup&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_21_52_05.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: after hitting don&#039;t register.  02_post_sn.lda&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_21_55_51.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: after hitting okay that&#039;s in unsupported mode&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_22_01_07.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: software started but idle&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_22_03_26.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_winxp_not_virus_2015-09-27_22_04_53.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: voltage monitoring.  03_voltage.lda&lt;br /&gt;
&lt;br /&gt;
Above also shows that signals are at least in the 1-1.25 MHz range.  I&#039;m currently sampling at 6.25 MS/s&lt;br /&gt;
&lt;br /&gt;
== Phase 2: USB cap/replay ==&lt;br /&gt;
&lt;br /&gt;
Continue above project by toying with USB driver.  Previously had some issue with certain response packet getting lost as it made its way back to the host (kernel capture: lost, libusb: lost, USB analyzer: received).  This issue is what prompted this more detailed analysis.  To that end, try to work in C to enable getting libusb help diagnosing the problem.&lt;br /&gt;
&lt;br /&gt;
= 2015-09-29 =&lt;br /&gt;
&lt;br /&gt;
Rewire Saleae cleaner.  Confirmed that can select up to 500 MS/s with 2 channels with analog turned off&lt;br /&gt;
&lt;br /&gt;
USB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; VID: 14b9&lt;br /&gt;
&#039;&#039;&#039; PID: 0001&lt;br /&gt;
&lt;br /&gt;
Looks like bp1410_sn.py (bfb0464a) demonstrates the issue I was having:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uvscada/bpm$ python bp1410_sn.py&lt;br /&gt;
Scanning for devices...&lt;br /&gt;
Found device&lt;br /&gt;
Bus 001 Device 006: ID 14b9:0001&lt;br /&gt;
val 157: 08160100&lt;br /&gt;
val 165: 000000&lt;br /&gt;
bulk read 167&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;bp1410_sn.py&amp;quot;, line 689, in &amp;lt;module&amp;gt;&lt;br /&gt;
    replay(dev)&lt;br /&gt;
  File &amp;quot;bp1410_sn.py&amp;quot;, line 495, in replay&lt;br /&gt;
    buff = bulkRead(0x86, 0x0200, timeout=500)&lt;br /&gt;
  File &amp;quot;bp1410_sn.py&amp;quot;, line 276, in bulkRead&lt;br /&gt;
    return dev.bulkRead(endpoint, length, timeout=timeout)&lt;br /&gt;
  File &amp;quot;/usr/local/lib/python2.7/dist-packages/usb1.py&amp;quot;, line 1174, in bulkRead&lt;br /&gt;
    transferred = self._bulkTransfer(endpoint, data, length, timeout)&lt;br /&gt;
  File &amp;quot;/usr/local/lib/python2.7/dist-packages/usb1.py&amp;quot;, line 1144, in _bulkTransfer&lt;br /&gt;
    raise libusb1.USBError(result)&lt;br /&gt;
libusb1.USBError: LIBUSB_ERROR_TIMEOUT [-7]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step through code with LA to better understand whats going on&lt;br /&gt;
&lt;br /&gt;
Open question: should I be renumerating?&lt;br /&gt;
&lt;br /&gt;
test file: la_sn.py (based on bp1410_sn.py)&lt;br /&gt;
&lt;br /&gt;
== packet 147/148 ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-29_23_45_11.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
LA: seeing some small transients.  They are repeatable.  Is this edge cross talk or actual signals?  From:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 147/148&lt;br /&gt;
buff = controlRead(0xC0, 0xB0, 0x0000, 0x0000, 4096)&lt;br /&gt;
validate_read(&amp;quot;\x00\x00\x00&amp;quot;, buff, &amp;quot;packet 147/148&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== packet 157/158 ==&lt;br /&gt;
&lt;br /&gt;
Was not able to get any LA activity from this (CH0, 4 random channels):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 157/158&lt;br /&gt;
buff = bulkRead(0x86, 0x0200)&lt;br /&gt;
# NOTE:: req max 512 but got 4&lt;br /&gt;
validate_read(&amp;quot;\x08\x16\x01\x00&amp;quot;, buff, &amp;quot;packet 148.5&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== packet 149-154 ==&lt;br /&gt;
&lt;br /&gt;
Endpoint reset (packet 149-154) did not trigger CH0&lt;br /&gt;
&lt;br /&gt;
== packet 165/166 ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-29_23_56_17.png|frameless]]&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 165/166&lt;br /&gt;
buff = controlRead(0xC0, 0xB0, 0x0000, 0x0000, 4096)&lt;br /&gt;
print &#039;val 165: %s&#039; % binascii.hexlify(buff)&lt;br /&gt;
# NOTE:: req max 4096 but got 3&lt;br /&gt;
validate_read(&amp;quot;\x00\x00\x00&amp;quot;, buff, &amp;quot;packet 165/166&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looks exactly like earlier but USB data is different&lt;br /&gt;
&lt;br /&gt;
== packet 167/168 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 167/168&lt;br /&gt;
buff = bulkRead(0x86, 0x0200, timeout=500)&lt;br /&gt;
# NOTE:: req max 512 but got 4&lt;br /&gt;
validate_read(&amp;quot;\x08\x16\x01\x00&amp;quot;, buff, &amp;quot;packet 167/168&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No LA traffic observed.  The packet that gets lost&lt;br /&gt;
&lt;br /&gt;
== S/N capture ==&lt;br /&gt;
&lt;br /&gt;
From win SW&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-30_00_11_32.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
01_sn.logicdata&lt;br /&gt;
&lt;br /&gt;
My S/N: 34346&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 0x862a&lt;br /&gt;
&#039;&#039;&#039; 0b_1000_0110_0010_1010&lt;br /&gt;
&lt;br /&gt;
This trace provides the first real insight:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; CH1-8 appear to be 8 bit data bus&lt;br /&gt;
&#039;&#039;&#039; CH9: semi clock like or crosstalk&lt;br /&gt;
&#039;&#039;&#039; CH10: semi clock like or crosstalk&lt;br /&gt;
&#039;&#039;&#039; CH 13: clock like&lt;br /&gt;
&lt;br /&gt;
== Next steps ==&lt;br /&gt;
&lt;br /&gt;
Generate C version and double check data flow.  Consider getting LA trace from Windows SW working correctly to better understand whats going on&lt;br /&gt;
&lt;br /&gt;
= 2015-10-04 =&lt;br /&gt;
&lt;br /&gt;
== S/N extraction ==&lt;br /&gt;
&lt;br /&gt;
Given&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
dev.bulkWrite(0x02, &amp;quot;\x0E\x00&amp;quot;)&lt;br /&gt;
buff = dev.bulkRead(0x86, 0x0200)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generates a bus transaction (ex: getting serial number).  S/N USB bytes:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1 bytes: unknown&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x08&lt;br /&gt;
&#039;&#039;&#039; 4 bytes: bus transaction&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x3A&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x90&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x32&lt;br /&gt;
&#039;&#039;&#039; 2 bytes: unknown&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&#039;&#039;&#039; 8 bytes: bus transaction&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x2A&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x86&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x01&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x95&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x3C&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x36&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x90&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&#039;&#039;&#039;* Byte order: little endian&lt;br /&gt;
&#039;&#039;&#039; 2 bytes: unknown&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x20&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&#039;&#039;&#039; 14 bytes: bus transaction&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x01&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;xD6&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x05&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x01&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x72&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x24&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x22&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x39&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&#039;&#039;&#039;* Are the last 4 bytes actually part of this?&lt;br /&gt;
&#039;&#039;&#039; 4 bytes: unknown&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;xBF&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x1D&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x20&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&lt;br /&gt;
Note: the USB trace is not the same trace as used on the LA&lt;br /&gt;
&lt;br /&gt;
S/N details:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 181/182&lt;br /&gt;
dev.bulkWrite(0x02, &amp;quot;\x0E\x00&amp;quot;)&lt;br /&gt;
# Generated from packet 183/184&lt;br /&gt;
buff = dev.bulkRead(0x86, 0x0200)&lt;br /&gt;
# NOTE:: req max 512 but got 35&lt;br /&gt;
validate_read(&amp;quot;\x08\x3A\x00\x90\x32\x00\x00\x2A\x86\x01\x95\x3C\x36\x90\x00\x20&amp;quot;&lt;br /&gt;
          &amp;quot;\x00\x01\x00\xD6\x05\x01\x00\x72\x24\x22\x39\x00\x00\x00\x00\xBF&amp;quot;&lt;br /&gt;
          &amp;quot;\x1D\x20\x00&amp;quot;, buff, &amp;quot;packet 183/184&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Assuming negative clock on D13&lt;br /&gt;
&lt;br /&gt;
Unmatched&lt;br /&gt;
  0.2932924 0.0033224 0x0E&lt;br /&gt;
  0.2932952 0.0000028 0x00&lt;br /&gt;
  0.2973270 0.0040318 0x00&lt;br /&gt;
First&lt;br /&gt;
  0.2973350 0.0000080 0x3A&lt;br /&gt;
  0.2973430 0.0000080 0x00&lt;br /&gt;
  0.2973510 0.0000080 0x90&lt;br /&gt;
  0.2973590 0.0000080 0x32&lt;br /&gt;
Unmatched&lt;br /&gt;
  0.2973670 0.0000080 0xA7&lt;br /&gt;
    These bytes look to be a CRC, checksum etc but haven&#039;t matched up yet&lt;br /&gt;
  0.2973750 0.0000080 0x02&lt;br /&gt;
Second&lt;br /&gt;
  0.2973830 0.0000080 0x2A&lt;br /&gt;
  0.2973910 0.0000080 0x86&lt;br /&gt;
  0.2973990 0.0000080 0x01&lt;br /&gt;
  0.2974070 0.0000080 0x95&lt;br /&gt;
  0.2974150 0.0000080 0x3C&lt;br /&gt;
  0.2974230 0.0000080 0x36&lt;br /&gt;
  0.2974310 0.0000080 0x90&lt;br /&gt;
  0.2974390 0.0000080 0x00&lt;br /&gt;
Unmatched&lt;br /&gt;
  0.2974470 0.0000080 0x1F&lt;br /&gt;
  0.2974550 0.0000080 0x00&lt;br /&gt;
Third&lt;br /&gt;
  0.2974630 0.0000080 0x01&lt;br /&gt;
  0.2974710 0.0000080 0x00&lt;br /&gt;
  0.2974790 0.0000080 0xD6&lt;br /&gt;
  0.2974870 0.0000080 0x05&lt;br /&gt;
  0.2974950 0.0000080 0x01&lt;br /&gt;
  0.2975030 0.0000080 0x00&lt;br /&gt;
  0.2975110 0.0000080 0x72&lt;br /&gt;
  0.2975190 0.0000080 0x24&lt;br /&gt;
  0.2975270 0.0000080 0x22&lt;br /&gt;
  0.2975350 0.0000080 0x39&lt;br /&gt;
  0.2975430 0.0000080 0x00&lt;br /&gt;
  0.2975510 0.0000080 0x00&lt;br /&gt;
  0.2975590 0.0000080 0x00&lt;br /&gt;
  0.2975670 0.0000080 0x00&lt;br /&gt;
end matches&lt;br /&gt;
  0.2975750 0.0000080 0x27&lt;br /&gt;
  0.2988804 0.0013054 0x14&lt;br /&gt;
  0.2988832 0.0000028 0x38&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2015-10-06 =&lt;br /&gt;
&lt;br /&gt;
controlRead(0xC0, 0xB0, 0x0000, 0x0000, 4096)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; LA: traffic but data bus has no activity (held high)&lt;br /&gt;
&lt;br /&gt;
bulkWrite(0x02, &amp;quot;&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x01&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; LA traffic with bus activity&lt;br /&gt;
&lt;br /&gt;
bulkRead(0x86, 0x0200)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Reads fx2 buffer.  No LA traffic&lt;br /&gt;
&lt;br /&gt;
Ran some experiments and confirmed that the first byte on the bus is the bulkWrite byte.  Also can string multiple together to get them put together&lt;br /&gt;
&lt;br /&gt;
CH9:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1: Host to device (host write)&lt;br /&gt;
&#039;&#039;&#039; 0: Device to host (host read)&lt;br /&gt;
&lt;br /&gt;
CH13:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Clock&lt;br /&gt;
&#039;&#039;&#039; Host reads on positive edge&lt;br /&gt;
&#039;&#039;&#039; Host changes data on negative edge&lt;br /&gt;
&#039;&#039;&#039; Device reads on positive edge?&lt;br /&gt;
&#039;&#039;&#039; Device changes data on negative edge&lt;br /&gt;
&lt;br /&gt;
bulkWrite(0x02, &amp;quot;%%\%%xDE%%\%%xAD%%\%%BE%%\%%EF&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Resulted in %%\%%x9E%%\%%xAD on bus&lt;br /&gt;
&#039;&#039;&#039; Why did it drop the first high bit but no the second?  Escape sequence of some sort?&lt;br /&gt;
&#039;&#039;&#039;* TODO: review data for 0x80 bit&lt;br /&gt;
&#039;&#039;&#039; Why did it stop after the first two bytes?&lt;/div&gt;</summary>
		<author><name>RH</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=BPM_WWAVUSBEPP_LA&amp;diff=940</id>
		<title>BPM WWAVUSBEPP LA</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=BPM_WWAVUSBEPP_LA&amp;diff=940"/>
		<updated>2023-05-01T00:44:14Z</updated>

		<summary type="html">&lt;p&gt;RH: /* Phase 1: LA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Logic analyzer test&lt;br /&gt;
&lt;br /&gt;
17 signal pins, 16 LA channels.  Arbitrarily drop pin 8 in favor of hooking everything up linearly.&lt;br /&gt;
&lt;br /&gt;
= 2015-09-27 =&lt;br /&gt;
&lt;br /&gt;
Project goal: understand how voltages/currents are read out&lt;br /&gt;
&lt;br /&gt;
== Phase 1: LA ==&lt;br /&gt;
&lt;br /&gt;
Ran into some signal integrity issues setting up capture.  Had to do short wires.  More info:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Final setup&lt;br /&gt;
&#039;&#039;&#039;* [[https://twitter.com/johndmcmaster/status/648329962819182592|https:&#039;&#039;twitter.com/johndmcmaster/status/648329962819182592]]&lt;br /&gt;
&#039;&#039;&#039;* [[https://twitter.com/johndmcmaster/status/648348769746948097|https:&#039;&#039;twitter.com/johndmcmaster/status/648348769746948097]]&lt;br /&gt;
&#039;&#039;&#039; Flaky: flying leads&lt;br /&gt;
&#039;&#039;&#039;* [[https://twitter.com/johndmcmaster/status/648315944121425920|https:&#039;&#039;twitter.com/johndmcmaster/status/648315944121425920]]&lt;br /&gt;
&#039;&#039;&#039; Complete failure: ribbon cable&lt;br /&gt;
&#039;&#039;&#039;* [[https://twitter.com/johndmcmaster/status/645354861383385088|https:&#039;&#039;twitter.com/johndmcmaster/status/645354861383385088]]&lt;br /&gt;
&lt;br /&gt;
Setup to trigger on J2.1.  Triggered during startup sequence reading serial number etc&lt;br /&gt;
&lt;br /&gt;
Discovered Saleae only support 8/16 channels with USB 2.  Ordered USB3 expresscard adapter.&lt;br /&gt;
&lt;br /&gt;
SN:&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_21_43_18.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: 1-8 at startup&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_21_52_05.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: after hitting don&#039;t register.  02_post_sn.lda&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_21_55_51.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: after hitting okay that&#039;s in unsupported mode&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_22_01_07.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: software started but idle&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-27_22_03_26.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_winxp_not_virus_2015-09-27_22_04_53.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: voltage monitoring.  03_voltage.lda&lt;br /&gt;
&lt;br /&gt;
Above also shows that signals are at least in the 1-1.25 MHz range.  I&#039;m currently sampling at 6.25 MS/s&lt;br /&gt;
&lt;br /&gt;
== Phase 2: USB cap/replay ==&lt;br /&gt;
&lt;br /&gt;
Continue above project by toying with USB driver.  Previously had some issue with certain response packet getting lost as it made its way back to the host (kernel capture: lost, libusb: lost, USB analyzer: received).  This issue is what prompted this more detailed analysis.  To that end, try to work in C to enable getting libusb help diagnosing the problem.&lt;br /&gt;
&lt;br /&gt;
= 2015-09-29 =&lt;br /&gt;
&lt;br /&gt;
Rewire Saleae cleaner.  Confirmed that can select up to 500 MS/s with 2 channels with analog turned off&lt;br /&gt;
&lt;br /&gt;
USB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; VID: 14b9&lt;br /&gt;
&#039;&#039;&#039; PID: 0001&lt;br /&gt;
&lt;br /&gt;
Looks like bp1410_sn.py (bfb0464a) demonstrates the issue I was having:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uvscada/bpm$ python bp1410_sn.py&lt;br /&gt;
Scanning for devices...&lt;br /&gt;
Found device&lt;br /&gt;
Bus 001 Device 006: ID 14b9:0001&lt;br /&gt;
val 157: 08160100&lt;br /&gt;
val 165: 000000&lt;br /&gt;
bulk read 167&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;bp1410_sn.py&amp;quot;, line 689, in &amp;lt;module&amp;gt;&lt;br /&gt;
    replay(dev)&lt;br /&gt;
  File &amp;quot;bp1410_sn.py&amp;quot;, line 495, in replay&lt;br /&gt;
    buff = bulkRead(0x86, 0x0200, timeout=500)&lt;br /&gt;
  File &amp;quot;bp1410_sn.py&amp;quot;, line 276, in bulkRead&lt;br /&gt;
    return dev.bulkRead(endpoint, length, timeout=timeout)&lt;br /&gt;
  File &amp;quot;/usr/local/lib/python2.7/dist-packages/usb1.py&amp;quot;, line 1174, in bulkRead&lt;br /&gt;
    transferred = self._bulkTransfer(endpoint, data, length, timeout)&lt;br /&gt;
  File &amp;quot;/usr/local/lib/python2.7/dist-packages/usb1.py&amp;quot;, line 1144, in _bulkTransfer&lt;br /&gt;
    raise libusb1.USBError(result)&lt;br /&gt;
libusb1.USBError: LIBUSB_ERROR_TIMEOUT [-7]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step through code with LA to better understand whats going on&lt;br /&gt;
&lt;br /&gt;
Open question: should I be renumerating?&lt;br /&gt;
&lt;br /&gt;
test file: la_sn.py (based on bp1410_sn.py)&lt;br /&gt;
&lt;br /&gt;
== packet 147/148 ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-29_23_45_11.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
LA: seeing some small transients.  They are repeatable.  Is this edge cross talk or actual signals?  From:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 147/148&lt;br /&gt;
buff = controlRead(0xC0, 0xB0, 0x0000, 0x0000, 4096)&lt;br /&gt;
validate_read(&amp;quot;\x00\x00\x00&amp;quot;, buff, &amp;quot;packet 147/148&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== packet 157/158 ==&lt;br /&gt;
&lt;br /&gt;
Was not able to get any LA activity from this (CH0, 4 random channels):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 157/158&lt;br /&gt;
buff = bulkRead(0x86, 0x0200)&lt;br /&gt;
# NOTE:: req max 512 but got 4&lt;br /&gt;
validate_read(&amp;quot;\x08\x16\x01\x00&amp;quot;, buff, &amp;quot;packet 148.5&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== packet 149-154 ==&lt;br /&gt;
&lt;br /&gt;
Endpoint reset (packet 149-154) did not trigger CH0&lt;br /&gt;
&lt;br /&gt;
== packet 165/166 ==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-29_23_56_17.png|frameless]]&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 165/166&lt;br /&gt;
buff = controlRead(0xC0, 0xB0, 0x0000, 0x0000, 4096)&lt;br /&gt;
print &#039;val 165: %s&#039; % binascii.hexlify(buff)&lt;br /&gt;
# NOTE:: req max 4096 but got 3&lt;br /&gt;
validate_read(&amp;quot;\x00\x00\x00&amp;quot;, buff, &amp;quot;packet 165/166&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looks exactly like earlier but USB data is different&lt;br /&gt;
&lt;br /&gt;
== packet 167/168 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 167/168&lt;br /&gt;
buff = bulkRead(0x86, 0x0200, timeout=500)&lt;br /&gt;
# NOTE:: req max 512 but got 4&lt;br /&gt;
validate_read(&amp;quot;\x08\x16\x01\x00&amp;quot;, buff, &amp;quot;packet 167/168&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No LA traffic observed.  The packet that gets lost&lt;br /&gt;
&lt;br /&gt;
== S/N capture ==&lt;br /&gt;
&lt;br /&gt;
From win SW&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_wwavusbepp_screenshot_from_2015-09-30_00_11_32.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
01_sn.logicdata&lt;br /&gt;
&lt;br /&gt;
My S/N: 34346&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 0x862a&lt;br /&gt;
&#039;&#039;&#039; 0b_1000_0110_0010_1010&lt;br /&gt;
&lt;br /&gt;
This trace provides the first real insight:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; CH1-8 appear to be 8 bit data bus&lt;br /&gt;
&#039;&#039;&#039; CH9: semi clock like or crosstalk&lt;br /&gt;
&#039;&#039;&#039; CH10: semi clock like or crosstalk&lt;br /&gt;
&#039;&#039;&#039; CH 13: clock like&lt;br /&gt;
&lt;br /&gt;
== Next steps ==&lt;br /&gt;
&lt;br /&gt;
Generate C version and double check data flow.  Consider getting LA trace from Windows SW working correctly to better understand whats going on&lt;br /&gt;
&lt;br /&gt;
= 2015-10-04 =&lt;br /&gt;
&lt;br /&gt;
== S/N extraction ==&lt;br /&gt;
&lt;br /&gt;
Given&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
dev.bulkWrite(0x02, &amp;quot;\x0E\x00&amp;quot;)&lt;br /&gt;
buff = dev.bulkRead(0x86, 0x0200)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generates a bus transaction (ex: getting serial number).  S/N USB bytes:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1 bytes: unknown&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x08&lt;br /&gt;
&#039;&#039;&#039; 4 bytes: bus transaction&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x3A&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x90&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x32&lt;br /&gt;
&#039;&#039;&#039; 2 bytes: unknown&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&#039;&#039;&#039; 8 bytes: bus transaction&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x2A&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x86&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x01&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x95&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x3C&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x36&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x90&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&#039;&#039;&#039;* Byte order: little endian&lt;br /&gt;
&#039;&#039;&#039; 2 bytes: unknown&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x20&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&#039;&#039;&#039; 14 bytes: bus transaction&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;x01&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;xD6&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x05&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x01&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x72&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x24&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x22&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x39&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&#039;&#039;&#039;* Are the last 4 bytes actually part of this?&lt;br /&gt;
&#039;&#039;&#039; 4 bytes: unknown&lt;br /&gt;
&#039;&#039;&#039;* &amp;lt;nowiki&amp;gt; \&amp;lt;/nowiki&amp;gt;xBF&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x1D&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x20&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x00&lt;br /&gt;
&lt;br /&gt;
Note: the USB trace is not the same trace as used on the LA&lt;br /&gt;
&lt;br /&gt;
S/N details:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Generated from packet 181/182&lt;br /&gt;
dev.bulkWrite(0x02, &amp;quot;\x0E\x00&amp;quot;)&lt;br /&gt;
# Generated from packet 183/184&lt;br /&gt;
buff = dev.bulkRead(0x86, 0x0200)&lt;br /&gt;
# NOTE:: req max 512 but got 35&lt;br /&gt;
validate_read(&amp;quot;\x08\x3A\x00\x90\x32\x00\x00\x2A\x86\x01\x95\x3C\x36\x90\x00\x20&amp;quot;&lt;br /&gt;
          &amp;quot;\x00\x01\x00\xD6\x05\x01\x00\x72\x24\x22\x39\x00\x00\x00\x00\xBF&amp;quot;&lt;br /&gt;
          &amp;quot;\x1D\x20\x00&amp;quot;, buff, &amp;quot;packet 183/184&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Assuming negative clock on D13&lt;br /&gt;
&lt;br /&gt;
Unmatched&lt;br /&gt;
  0.2932924 0.0033224 0x0E&lt;br /&gt;
  0.2932952 0.0000028 0x00&lt;br /&gt;
  0.2973270 0.0040318 0x00&lt;br /&gt;
First&lt;br /&gt;
  0.2973350 0.0000080 0x3A&lt;br /&gt;
  0.2973430 0.0000080 0x00&lt;br /&gt;
  0.2973510 0.0000080 0x90&lt;br /&gt;
  0.2973590 0.0000080 0x32&lt;br /&gt;
Unmatched&lt;br /&gt;
  0.2973670 0.0000080 0xA7&lt;br /&gt;
    These bytes look to be a CRC, checksum etc but haven&#039;t matched up yet&lt;br /&gt;
  0.2973750 0.0000080 0x02&lt;br /&gt;
Second&lt;br /&gt;
  0.2973830 0.0000080 0x2A&lt;br /&gt;
  0.2973910 0.0000080 0x86&lt;br /&gt;
  0.2973990 0.0000080 0x01&lt;br /&gt;
  0.2974070 0.0000080 0x95&lt;br /&gt;
  0.2974150 0.0000080 0x3C&lt;br /&gt;
  0.2974230 0.0000080 0x36&lt;br /&gt;
  0.2974310 0.0000080 0x90&lt;br /&gt;
  0.2974390 0.0000080 0x00&lt;br /&gt;
Unmatched&lt;br /&gt;
  0.2974470 0.0000080 0x1F&lt;br /&gt;
  0.2974550 0.0000080 0x00&lt;br /&gt;
Third&lt;br /&gt;
  0.2974630 0.0000080 0x01&lt;br /&gt;
  0.2974710 0.0000080 0x00&lt;br /&gt;
  0.2974790 0.0000080 0xD6&lt;br /&gt;
  0.2974870 0.0000080 0x05&lt;br /&gt;
  0.2974950 0.0000080 0x01&lt;br /&gt;
  0.2975030 0.0000080 0x00&lt;br /&gt;
  0.2975110 0.0000080 0x72&lt;br /&gt;
  0.2975190 0.0000080 0x24&lt;br /&gt;
  0.2975270 0.0000080 0x22&lt;br /&gt;
  0.2975350 0.0000080 0x39&lt;br /&gt;
  0.2975430 0.0000080 0x00&lt;br /&gt;
  0.2975510 0.0000080 0x00&lt;br /&gt;
  0.2975590 0.0000080 0x00&lt;br /&gt;
  0.2975670 0.0000080 0x00&lt;br /&gt;
end matches&lt;br /&gt;
  0.2975750 0.0000080 0x27&lt;br /&gt;
  0.2988804 0.0013054 0x14&lt;br /&gt;
  0.2988832 0.0000028 0x38&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2015-10-06 =&lt;br /&gt;
&lt;br /&gt;
controlRead(0xC0, 0xB0, 0x0000, 0x0000, 4096)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; LA: traffic but data bus has no activity (held high)&lt;br /&gt;
&lt;br /&gt;
bulkWrite(0x02, &amp;quot;&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;x01&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; LA traffic with bus activity&lt;br /&gt;
&lt;br /&gt;
bulkRead(0x86, 0x0200)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Reads fx2 buffer.  No LA traffic&lt;br /&gt;
&lt;br /&gt;
Ran some experiments and confirmed that the first byte on the bus is the bulkWrite byte.  Also can string multiple together to get them put together&lt;br /&gt;
&lt;br /&gt;
CH9:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1: Host to device (host write)&lt;br /&gt;
&#039;&#039;&#039; 0: Device to host (host read)&lt;br /&gt;
&lt;br /&gt;
CH13:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Clock&lt;br /&gt;
&#039;&#039;&#039; Host reads on positive edge&lt;br /&gt;
&#039;&#039;&#039; Host changes data on negative edge&lt;br /&gt;
&#039;&#039;&#039; Device reads on positive edge?&lt;br /&gt;
&#039;&#039;&#039; Device changes data on negative edge&lt;br /&gt;
&lt;br /&gt;
bulkWrite(0x02, &amp;quot;%%\%%xDE%%\%%xAD%%\%%BE%%\%%EF&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Resulted in %%\%%x9E%%\%%xAD on bus&lt;br /&gt;
&#039;&#039;&#039; Why did it drop the first high bit but no the second?  Escape sequence of some sort?&lt;br /&gt;
&#039;&#039;&#039;* TODO: review data for 0x80 bit&lt;br /&gt;
&#039;&#039;&#039; Why did it stop after the first two bytes?&lt;/div&gt;</summary>
		<author><name>RH</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=BPM_Programmer&amp;diff=939</id>
		<title>BPM Programmer</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=BPM_Programmer&amp;diff=939"/>
		<updated>2023-04-29T06:34:56Z</updated>

		<summary type="html">&lt;p&gt;RH: /* Parallel to USB upgrade */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:BPM]]&lt;br /&gt;
[[Category:Programmer]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
&lt;br /&gt;
=BP series=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Vendor&lt;br /&gt;
!Model&lt;br /&gt;
!Year&lt;br /&gt;
!Motherboard&lt;br /&gt;
silkscreen&lt;br /&gt;
!Motherboard&lt;br /&gt;
CPU&lt;br /&gt;
!Motherboard&lt;br /&gt;
RAM&lt;br /&gt;
!Motherboard&lt;br /&gt;
FPGA sticker&lt;br /&gt;
!Card&lt;br /&gt;
Model&lt;br /&gt;
!Tech adapter&lt;br /&gt;
silkscreen&lt;br /&gt;
!Power supply&lt;br /&gt;
!Accessory&lt;br /&gt;
!Last BPWin&lt;br /&gt;
!Note&lt;br /&gt;
|-&lt;br /&gt;
|Actel&lt;br /&gt;
|SS2&lt;br /&gt;
|2001&lt;br /&gt;
|CPCB12A Rev. C&lt;br /&gt;
|Intel FC80486DX4100&lt;br /&gt;
|Populated&lt;br /&gt;
|U5&lt;br /&gt;
W42MX24A&lt;br /&gt;
BP MICROSYSTEMS&lt;br /&gt;
09/20/02&lt;br /&gt;
|CPCBPD8B Rev B&lt;br /&gt;
2001&lt;br /&gt;
|CPCBVLTA REV. B&lt;br /&gt;
2000&lt;br /&gt;
|&lt;br /&gt;
|Button&lt;br /&gt;
|&lt;br /&gt;
|mcmaster&lt;br /&gt;
|-&lt;br /&gt;
|Actel&lt;br /&gt;
|SS3&lt;br /&gt;
|2008-05-12&amp;lt;br /&amp;gt;&lt;br /&gt;
|WWAV12F&lt;br /&gt;
REV.F M0309&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ASSY WWAV12F &lt;br /&gt;
|Intel UG80486DX4100&lt;br /&gt;
|SO DDR&lt;br /&gt;
Populated&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CENTON&lt;br /&gt;
&lt;br /&gt;
512 MB&lt;br /&gt;
|&lt;br /&gt;
|CPCBPD8B Rev B&lt;br /&gt;
2001&lt;br /&gt;
|&lt;br /&gt;
|SWG&lt;br /&gt;
CEM-??&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CEL-22-LF000000006246&lt;br /&gt;
&lt;br /&gt;
REV-A1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|BPM&lt;br /&gt;
|1148&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;
|BPM&lt;br /&gt;
|1200&lt;br /&gt;
|1992&lt;br /&gt;
|BP-1200 Rev C&lt;br /&gt;
|AMD N80L286-16/S&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
|CPCBPD8 Rev. D&lt;br /&gt;
|&lt;br /&gt;
|INTEGRATED POWER DESIGN&amp;lt;br /&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|BPM&lt;br /&gt;
|1400/84&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;
|BPM&lt;br /&gt;
|1400&lt;br /&gt;
(1400/240)&lt;br /&gt;
|&lt;br /&gt;
|CPCB11 Rev. G&lt;br /&gt;
|80C286&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CPCBTA240V REV. D&lt;br /&gt;
|29203118-C2&lt;br /&gt;
REV-C C2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|BPM&lt;br /&gt;
|1410/84&lt;br /&gt;
|2005&lt;br /&gt;
|CPCBD03223 Rev. F&lt;br /&gt;
2005&lt;br /&gt;
|Intel 80486DX4100&lt;br /&gt;
|SO DDR&lt;br /&gt;
Unpopulated&lt;br /&gt;
|N/A&lt;br /&gt;
|CPCBPD8B Rev B&lt;br /&gt;
2001&lt;br /&gt;
|2002 BP MICROSYSTEMS&lt;br /&gt;
|Model?&lt;br /&gt;
Looks like SS3&lt;br /&gt;
&lt;br /&gt;
CEL-22-000000001560&lt;br /&gt;
&lt;br /&gt;
E145540, CS155-F3&lt;br /&gt;
&lt;br /&gt;
HP-OK, REV A&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|mcmaster&lt;br /&gt;
|-&lt;br /&gt;
|BPM&lt;br /&gt;
|1410&lt;br /&gt;
(1410/240)&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;
|BPM&lt;br /&gt;
|1600&lt;br /&gt;
|&lt;br /&gt;
|CPCB12A Rev. C 2001&lt;br /&gt;
|Intel FC80486DX4100&lt;br /&gt;
|72-pin SIMM&lt;br /&gt;
Unpopulated&lt;br /&gt;
|(handwritten)&lt;br /&gt;
MUS&lt;br /&gt;
28781&lt;br /&gt;
|CPCBPD8B Rev A 1999&lt;br /&gt;
|CPCBVLVTA REV. B 2000&lt;br /&gt;
|29203118-C2&lt;br /&gt;
REV-C C2&lt;br /&gt;
|&lt;br /&gt;
|5.33.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|BPM&lt;br /&gt;
|1610&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;
|BPM&lt;br /&gt;
|1700&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;
|BPM&lt;br /&gt;
|1710&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;
|BPM&lt;br /&gt;
|2000&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;
|BPM&lt;br /&gt;
|2100&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;
|BPM&lt;br /&gt;
|2200x4/240&lt;br /&gt;
|1998&lt;br /&gt;
|CPCB11 Rev. F&lt;br /&gt;
1998&lt;br /&gt;
|Harris CS80C286-16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CPCBPD8A Rev D&lt;br /&gt;
1997&lt;br /&gt;
|Top&lt;br /&gt;
CPCBTA240V REV. D&lt;br /&gt;
&lt;br /&gt;
1996&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bottom&lt;br /&gt;
&lt;br /&gt;
CPCBTA240V Rev. D&lt;br /&gt;
&lt;br /&gt;
1996&lt;br /&gt;
|29203118-C2&lt;br /&gt;
REV-C C2&lt;br /&gt;
|&lt;br /&gt;
|4.73.0&lt;br /&gt;
|mcmaster&lt;br /&gt;
REV vs Rev is inconsistent even on the same PCB...&lt;br /&gt;
|-&lt;br /&gt;
|BPM&lt;br /&gt;
|2500&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;
|BPM&lt;br /&gt;
|2510&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;
|BPM&lt;br /&gt;
|2600&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;
|BPM&lt;br /&gt;
|2600M&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;
|BPM&lt;br /&gt;
|2610&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;
|BPM&lt;br /&gt;
|2700&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;
|BPM&lt;br /&gt;
|2700M&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;
|BPM&lt;br /&gt;
|2710&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;
|BPM&lt;br /&gt;
|2800F&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;
General notes:&lt;br /&gt;
&lt;br /&gt;
*The following are the same basic hardware&lt;br /&gt;
**BP-1400, BP-2200&lt;br /&gt;
**BP-1410, SS3&lt;br /&gt;
**BP-1600, SS2&lt;br /&gt;
*Power supplies&lt;br /&gt;
**Three generations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
  (11:36:56 PM) Lord_Nightmare: the main processor [of the bp1200] is an 80286-16, with a 32mhz xtal&lt;br /&gt;
  (11:37:07 PM) Lord_Nightmare: [the board labeled] std48, it would [I assume] normally have [std48] printed on it nicely&lt;br /&gt;
  (11:37:22 PM) Lord_Nightmare: this one was a refurbished unit and i guess they used an unprinted metal case for that pcb&lt;br /&gt;
  (11:37:37 PM) Lord_Nightmare: std48 is the &#039;relay pcb&#039; &lt;br /&gt;
  (11:37:38 PM) digshadow: but whats the point&lt;br /&gt;
  (11:37:52 PM) Lord_Nightmare: i think it controls which pins are powered with what [rail] but am not sure&lt;br /&gt;
  (11:38:06 PM) digshadow: gotcha&lt;br /&gt;
  (11:38:07 PM) Lord_Nightmare: the bp1200 it is a &#039;separate&#039; pcb on top of the unit&lt;br /&gt;
  (11:38:13 PM) digshadow: but its basically part of the unit right&lt;br /&gt;
  (11:40:54 PM) Lord_Nightmare: the bp1600 has the &#039;relay board&#039; integrated as a board which sits on top of the rest of the inside of the unit inside the case&lt;br /&gt;
  (11:41:16 PM) Lord_Nightmare: i think the 1400 does as well&lt;br /&gt;
  (11:41:33 PM) Lord_Nightmare: while on the 1200 it sat on top of the unit&lt;br /&gt;
  (11:46:35 PM) Lord_Nightmare: the most basic bp unit was the bp-1148 &amp;quot;device programmer&amp;quot;&lt;br /&gt;
  (11:46:55 PM) Lord_Nightmare: note the case is identical to the 1200, and the only difference [in appearance] is &#039;universal&#039; is blacked out on the wording&lt;br /&gt;
  (11:47:11 PM) Lord_Nightmare: http://vertassets.blob.core.windows.net/image/107fdcf5/107fdcf5-2dad-11d4-8c3d-009027de0829/bp1148.jpg&lt;br /&gt;
  (11:47:46 PM) Lord_Nightmare: that picture is a mockup, the std48 &#039;layer&#039; is missing&lt;br /&gt;
  (11:48:11 PM) Lord_Nightmare: http://thumbs.ebaystatic.com/d/l225/m/m1qMyAgqacqzlOo4KbeZLcw.jpg shows an actual 1148 &lt;br /&gt;
&lt;br /&gt;
ECO: WWAV20-4&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;http://www3.bpmmicro.com/web/helpandsupport.nsf/69f301ee4e15195486256fcf0062c2eb/66634b97cb53c22e8625703e0062b99a!OpenDocument&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
*Effect 1: ECO: WWAV20-4 Effect 2: CPCB11 Rev A-F - TA-84 will occasionally fail relay test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://www3.bpmmicro.com/web/helpandsupport.nsf/WebKeys/BPM-7Q2R96!OpenDocument&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|BP-1148, BP-1200, BP-2000, BP-2100, BP-2500, BP-2510, BP-2600M Final Software Version&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Legacy Programmer Last Software Version Reference&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Per the following document, the final BPWin version for the legacy programmers listed above is BPWin 4.73.&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://www3.bpmicro.com/Web/helpandsupport.nsf/WebKeys/BPM-6AHS6M?opendocument&amp;amp;Cat=FAQ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can download BPWin 4.73 from our software download page by clicking the &amp;quot;BPM Legacy Software Download&amp;quot; link in the upper-left corner of the page.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BP-1200==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ln bpm bp-1200 unit top.jpg|frameless]]&lt;br /&gt;
[[File:Ln bpm bp-1200 unit top relay.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:Ln bpm bp-1200 relay btm.jpg|frameless]]&lt;br /&gt;
[[File:Ln bpm bp-1200 unit btm.jpg|frameless]]&lt;br /&gt;
[[File:Ln bpm bp-1200 unit side.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:Ln bpm bp-1200 pcb0.jpg|frameless]]&lt;br /&gt;
[[File:Ln bpm bp-1200 pcb1.jpg|frameless]]&lt;br /&gt;
[[File:Ln bpm bp-1200 ps.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:Ln bpm bp-1200 cpcbpd8 d back.jpg|frameless]]&lt;br /&gt;
[[File:Ln bpm bp-1200 cpcbpd8 d front.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC interface: parallel port&lt;br /&gt;
&lt;br /&gt;
Chip interface: 2 plug SM&lt;br /&gt;
&lt;br /&gt;
http://atariage.com/forums/topic/142884-bp-microsystems-eprom-programmer-a-cry-for-help/&lt;br /&gt;
&lt;br /&gt;
*IF you get a TA-84 pin driver module (and a SM48D 48-pin DIP module, but  NOT the one that comes with the BP-1148) it will convert your BP-1148  to a BP1200/84.&lt;br /&gt;
&lt;br /&gt;
==BP-1400==&lt;br /&gt;
&lt;br /&gt;
PC interface: parallel port&lt;br /&gt;
&lt;br /&gt;
Chip interface: 3 plug SM&lt;br /&gt;
&lt;br /&gt;
BP-1400/84: [http://web.archive.org/web/20061119190006/http://www.bpmicro.com/products.nsf/7df54a7a9b18958d862566710079b2a0/cd8e1e770bf83c0e862569510070a6cf/$FILE/1400-84%20Data%20Sheet.pdf]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BP-1400/240: [http://web.archive.org/web/20061119190026/http://www.bpmicro.com/products.nsf/7df54a7a9b18958d862566710079b2a0/cd8e1e770bf83c0e862569510070a6cf/$FILE/1400-240%20Data%20Sheet.pdf]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===EOL notice===&lt;br /&gt;
&lt;br /&gt;
http://www3.bpmmicro.com/web/helpandsupport.nsf/WebKeys/BPM-7AUPV7!OpenDocument&amp;amp;Cat=Issue&amp;amp;Click=&lt;br /&gt;
&lt;br /&gt;
End of Life for 1400 and 2200 model programmers&lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
BPM announces the planned end of support for the 1400 and 2200 model programmers on December 31, 2008. Introduced in 1996 and discontinued in 2005, the 2200 and 1400 were the first in the industry to enable fine control of programming waveforms for the highest quality programming with the widest device support capabilities. Limitations of the original programmers hardware combined with new software compatibility and component obsolescence forces this end of support announcement.&lt;br /&gt;
&lt;br /&gt;
Details&lt;br /&gt;
End of support means that BPWin software released in 2009 will not support the 1400 and 2200 model numbers. These models can continue to function with existing BPWin software released prior to 2009, but will not be eligible for additional algorithms or updates to existing algorithms. Hardware contracts will also not be available for these programmers. Also, repairs and calibration of these programmers are no longer possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Motherboard===&lt;br /&gt;
&lt;br /&gt;
[[File:pd_bpm_bp-1400_mb1.jpg|frameless]]&lt;br /&gt;
[[File:pd_bpm_bp-1400_mb2.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
Mezzanine board:&lt;br /&gt;
&lt;br /&gt;
[[File:pd_bpm_bp-1400_mez_top.jpg|frameless]]&lt;br /&gt;
[[File:pd_bpm_bp-1400_mez_btm.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Power supply===&lt;br /&gt;
&lt;br /&gt;
[[File:pd_bpm_bp-1400_ps.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BP-1410==&lt;br /&gt;
&lt;br /&gt;
[[BPM BP-1410]]&lt;br /&gt;
&lt;br /&gt;
External:&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_bp-1410_ext_btm.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1410_ext_side.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1410_ext_top.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
Power supply:&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_bp-1410_ps_overview.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC interface: USB&lt;br /&gt;
&lt;br /&gt;
Chip interface: 3 plug SM&lt;br /&gt;
&lt;br /&gt;
BP-1410/84 datasheet: [http://web.archive.org/web/20060321214044/http://www.bpmicro.com/web/bphome.nsf/webpages/141084-PDF/$FILE/1410_84.pdf]&lt;br /&gt;
&lt;br /&gt;
BP-1410/240 datasheet: [http://web.archive.org/web/20060321214333/http://www.bpmicro.com/web/bphome.nsf/webpages/1410240-PDF/$FILE/1410_240.pdf]&lt;br /&gt;
&lt;br /&gt;
===Motherboard===&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_bp-1410_mb_overview.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1410_mb_usb_off2.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
Motherboard USB connector:&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_bp-1410_mb_usb_off.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1410_mb_usb_on.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BP-1600==&lt;br /&gt;
&lt;br /&gt;
External:&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_bp-1600_top.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1600_btm.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1600_side.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PC interface: parallel port&lt;br /&gt;
&lt;br /&gt;
Chip interface: 3 plug SM&lt;br /&gt;
&lt;br /&gt;
BP-1600 datasheet: [http://web.archive.org/web/20050530023158/http://www.bpmicro.com/web/BPhome.nsf/webpages/1600-PDF/$FILE/1600DS_EN_0703.pdf]&lt;br /&gt;
&lt;br /&gt;
  1400 has a 286 and the 1410 a 486&lt;br /&gt;
  1600 supports 1.5V parts&lt;br /&gt;
  5000 more devices (probably a lot more by now)&lt;br /&gt;
&lt;br /&gt;
===Motherboard:===&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_bp-1600_mb1.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1600_mb2.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1600_mb_parallel_off.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
CPCD12A Rev. C&lt;br /&gt;
&lt;br /&gt;
CPU&lt;br /&gt;
&lt;br /&gt;
  intel&lt;br /&gt;
  Intel DX4&lt;br /&gt;
  iCOMP TM index=435&lt;br /&gt;
  PC80486DX4100&lt;br /&gt;
  L124EA01&lt;br /&gt;
  &amp;amp;EW 3VOLT SL2M9&lt;br /&gt;
  INTEL (M)(C) &#039;89 &#039;94&lt;br /&gt;
&lt;br /&gt;
Connectors are numbered with 1 at the side of the top or left of the PCB, oriented such that writing is right side up (ie side with blue trim pot)&lt;br /&gt;
&lt;br /&gt;
J10 (Fan, N/C)&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!#!!V!!Note&lt;br /&gt;
|-&lt;br /&gt;
|1||N/C?||&lt;br /&gt;
|-&lt;br /&gt;
|2||16.5||&lt;br /&gt;
|-&lt;br /&gt;
|3||0||&lt;br /&gt;
|-&lt;br /&gt;
|4||N/C?||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
J11 (Term. 1, N/C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!#!!V!!Note&lt;br /&gt;
|-&lt;br /&gt;
|1||0.0||&lt;br /&gt;
|-&lt;br /&gt;
|2||1.1||&lt;br /&gt;
|-&lt;br /&gt;
|3||0.25||&lt;br /&gt;
|-&lt;br /&gt;
|4||5.1||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
J12 (Term. 2, N/C)&lt;br /&gt;
&lt;br /&gt;
Was this supposed to be identical to above?  Broken?&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!#!!V!!Note&lt;br /&gt;
|-&lt;br /&gt;
|1||0.0||&lt;br /&gt;
|-&lt;br /&gt;
|2||0.0||&lt;br /&gt;
|-&lt;br /&gt;
|3||0.0||&lt;br /&gt;
|-&lt;br /&gt;
|4||0.8||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voltage header&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Label!!V!!Note&lt;br /&gt;
|-&lt;br /&gt;
| +5V||5.1||&lt;br /&gt;
|-&lt;br /&gt;
| +3.3V||3.3||&lt;br /&gt;
|-&lt;br /&gt;
|GND||0.0||&lt;br /&gt;
|-&lt;br /&gt;
| -3.5V||-3.5||&lt;br /&gt;
|-&lt;br /&gt;
| -5V||-5.0||&lt;br /&gt;
|-&lt;br /&gt;
|GND||0.0||&lt;br /&gt;
|-&lt;br /&gt;
| +2.5V||2.5||&lt;br /&gt;
|-&lt;br /&gt;
|PGD||4.1||&lt;br /&gt;
|-&lt;br /&gt;
|VTH||1.6||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Power supply===&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_bp-1600_ps.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_bpm_bp-1600_ps_overview.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
J4 (12V fans...wtf?)&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!#!!Color!!V!!Note&lt;br /&gt;
|-&lt;br /&gt;
|1||Red||35.4||&lt;br /&gt;
|-&lt;br /&gt;
|2||Red||16.5||&lt;br /&gt;
|-&lt;br /&gt;
|3||Black||0.0||&lt;br /&gt;
|-&lt;br /&gt;
|4||Black||5.3||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
J5 (to MB J4 or J20)&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!#!!Color!!V!!Note&lt;br /&gt;
|-&lt;br /&gt;
|1||Purple||35.4||&lt;br /&gt;
|-&lt;br /&gt;
|2||Orange||16.5||&lt;br /&gt;
|-&lt;br /&gt;
|3||Black||0.0||&lt;br /&gt;
|-&lt;br /&gt;
|4||Red||5.3||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
J6 (to MB J4 or J20)&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!#!!Color!!V!!Note&lt;br /&gt;
|-&lt;br /&gt;
|1||Purple||35.4||&lt;br /&gt;
|-&lt;br /&gt;
|2||Orange||16.5||&lt;br /&gt;
|-&lt;br /&gt;
|3||Black||0.0||&lt;br /&gt;
|-&lt;br /&gt;
|4||Red||5.3||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BP-2200==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Concurrent Programming System&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PC interface: parallel port&lt;br /&gt;
&lt;br /&gt;
Chip interface: 4X 3 plug SM&lt;br /&gt;
&lt;br /&gt;
BP-2200 datasheet: [http://web.archive.org/web/20061119185923/http://www.bpmicro.com/products.nsf/7df54a7a9b18958d862566710079b2a0/bc7af9c2aab5d676862566540077413c/$FILE/2200%20Data%20Sheet.pdf]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Parallel to USB upgrade==&lt;br /&gt;
&lt;br /&gt;
Main page: [[BPM_WWAVUSBEPP]]&lt;br /&gt;
&lt;br /&gt;
==USB hub==&lt;br /&gt;
&lt;br /&gt;
Used on gang programmers&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_wwavusbhub_1.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_wwavusbhub_2.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_wwavusbhub_3.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
=EP series=&lt;br /&gt;
&lt;br /&gt;
==EP-1==&lt;br /&gt;
&lt;br /&gt;
PC interface: parallel port&lt;br /&gt;
&lt;br /&gt;
Chip interface: DIP&lt;br /&gt;
&lt;br /&gt;
==EP-1132==&lt;br /&gt;
&lt;br /&gt;
PC interface: parallel port&lt;br /&gt;
&lt;br /&gt;
Chip interface: DIP-32&lt;br /&gt;
&lt;br /&gt;
==EP-1140==&lt;br /&gt;
[[File:BP_EP_1140_Top.jpg|frameless|480px]]&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PC interface:&#039;&#039;&#039; parallel port&amp;lt;br \&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Chip interface:&#039;&#039;&#039; DIP-40&amp;lt;br \&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CPU:&#039;&#039;&#039; Intel 8088&amp;lt;br \&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Memory:&#039;&#039;&#039; 8KB/32KB SRAM&amp;lt;br \&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Firmware:&#039;&#039;&#039; 8KB/16KB/32KB EPROM&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:BP_EP_1140_PCB_Front.jpg|frameless|480px]]&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:BP_EP_1140_Parallel.jpg|frameless|160px]]&lt;br /&gt;
[[File:BP_EP_1140_CPU.jpg|frameless|160px]]&lt;br /&gt;
[[File:BP_EP_1140_Linear_Supply.jpg|frameless|160px]]&amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:BP_EP_1140_Variable_Supply.jpg|frameless|240px]]&lt;br /&gt;
[[File:BP_EP_1140_IO_Ground.jpg|frameless|240px]]&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jumpers:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
*EPROM Type&lt;br /&gt;
**Left = ON for 27256, OFF for 2764/27128&lt;br /&gt;
**Middle = ON for 27128/27256, OFF for 2764&lt;br /&gt;
*SRAM Type&lt;br /&gt;
**Right = ON for 62256*, OFF for 6264&lt;br /&gt;
&#039;&#039;ON = Up/Towards xtal&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;OFF = Down/Away from xtal&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
(* Note: Even if the firmware can deal with more RAM, BPDos/BPWin might expect it to be hardcoded and crash the programmer if not set right.)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Powersupply:&#039;&#039;&#039;&lt;br /&gt;
*Unregulated&lt;br /&gt;
**-13.4V/+11.1V&lt;br /&gt;
**-44.8V/+38.8V&lt;br /&gt;
*Linear&lt;br /&gt;
**+5V (TTL, CPU, DAC)&lt;br /&gt;
**+6V (CMOS)&lt;br /&gt;
**-3V/+29V (Op-Amps)&lt;br /&gt;
*Variable&lt;br /&gt;
**Overcurrent-protection&lt;br /&gt;
**13 DACs (DAC0830LCN)&lt;br /&gt;
**4 quad op-amps (TL084CN)&lt;br /&gt;
*Routing&lt;br /&gt;
**12 transistors for VCC/VPP (NSDU01)&lt;br /&gt;
**11 transistors which has something to do with VPP-pins (PN2222)&lt;br /&gt;
**8 transistors for GND (IRF-Z15)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pinout:&#039;&#039;&#039;&lt;br /&gt;
*20 normal IO pins&lt;br /&gt;
*1 pin with VCC feature&lt;br /&gt;
*11 pins with VPP feature&lt;br /&gt;
*8 pins with GND feature&lt;br /&gt;
*Out of all the pins, 4 have some unknown additional feature&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Pin features:&lt;br /&gt;
______	   _____   _____     ______&lt;br /&gt;
_	VPP	|_|	VCC       _	&lt;br /&gt;
_	Pin*		Pin       _	&lt;br /&gt;
_	Pin*		VPP       _	&lt;br /&gt;
_	GND		VPP       _&lt;br /&gt;
___	Pin		VPP     ___&lt;br /&gt;
_	Pin		VPP       _	&lt;br /&gt;
_	VPP		VPP       _&lt;br /&gt;
_	Pin		Pin       _	&lt;br /&gt;
_	Pin		VPP       _&lt;br /&gt;
______	Pin		VPP  ______&lt;br /&gt;
_	GND		GND       _&lt;br /&gt;
_	GND		Pin       _&lt;br /&gt;
_	Pin		Pin       _&lt;br /&gt;
_	GND		Pin       _&lt;br /&gt;
___	Pin		VPP     ___&lt;br /&gt;
_	GND		VPP       _&lt;br /&gt;
_	Pin		Pin       _&lt;br /&gt;
_	GND*		Pin       _&lt;br /&gt;
_	Pin*		Pin       _&lt;br /&gt;
______	GND_____________Pin  ______&lt;br /&gt;
&lt;br /&gt;
* Unknown additional feature&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PLD series=&lt;br /&gt;
&lt;br /&gt;
==PLD-1128==&lt;br /&gt;
[[File:BP_PLD_1128_Top.jpg|frameless|480px]]&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PC interface:&#039;&#039;&#039; parallel port&amp;lt;br \&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Chip interface:&#039;&#039;&#039; DIP-28&amp;lt;br \&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CPU:&#039;&#039;&#039; Zilog Z80&amp;lt;br \&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Memory:&#039;&#039;&#039; 2KB/8KB SRAM&amp;lt;br \&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Firmware:&#039;&#039;&#039; 8KB/16KB/32KB EPROM&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:BP_PLD_1128_PCB_Front.jpg|frameless|480px]]&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:BP_PLD_1128_Parallel.jpg|frameless|160px]]&lt;br /&gt;
[[File:BP_PLD_1128_IO_Upper.jpg|frameless|240px]]&lt;br /&gt;
[[File:BP_PLD_1128_Linear_Supply_Upper.jpg|frameless|160px]]&amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:BP_PLD_1128_CPU.jpg|frameless|160px]]&lt;br /&gt;
[[File:BP_PLD_1128_IO_Lower.jpg|frameless|240px]]&lt;br /&gt;
[[File:BP_PLD_1128_Linear_Supply_Lower.jpg|frameless|160px]]&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jumpers:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
*EPROM Type&lt;br /&gt;
**W1 = ON for 2764/27128, OFF for 27256&lt;br /&gt;
**W2 = ON for 2764 , OFF for 27128/27256&lt;br /&gt;
*SRAM Type&lt;br /&gt;
**W3 = ON for 6116, OFF for 6264*&lt;br /&gt;
*Unknown&lt;br /&gt;
**Jumper up by the parallel port = ??&lt;br /&gt;
&#039;&#039;ON = Up/Towards CPU&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;OFF = Down/Away from CPU&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
(* Note: V1.05d firmware only supports 6116-type SRAM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Powersupply:&#039;&#039;&#039;&lt;br /&gt;
*Unregulated&lt;br /&gt;
**-10.9V/+10.3V&lt;br /&gt;
**+52.5V&lt;br /&gt;
*Regulated&lt;br /&gt;
**+5V (Digital)&lt;br /&gt;
**-5.8V/+11.3V (DAC)&lt;br /&gt;
**-5.8V/+30V (Op-Amp)&lt;br /&gt;
**Possibly more&lt;br /&gt;
&lt;br /&gt;
=CP series=&lt;br /&gt;
&lt;br /&gt;
==CP-1128==&lt;br /&gt;
&lt;br /&gt;
PC interface: parallel port&lt;br /&gt;
&lt;br /&gt;
Chip interface: DIP-28&lt;br /&gt;
&lt;br /&gt;
=Silicon Sculptor=&lt;br /&gt;
&lt;br /&gt;
Actel programmers made by BPM.&lt;br /&gt;
&lt;br /&gt;
As these cost less than the &amp;quot;real&amp;quot; BPM programmers, presumably can&#039;t be used with normal BPM software and/or work with other adapters&lt;br /&gt;
&lt;br /&gt;
==Silicon Sculptor 1==&lt;br /&gt;
&lt;br /&gt;
Has 2 headers (left/right) that adaptors plug into&lt;br /&gt;
&lt;br /&gt;
Interface: parallel port&lt;br /&gt;
&lt;br /&gt;
There is version with 1 connector and a version with 6 connectors&lt;br /&gt;
&lt;br /&gt;
1X markings&lt;br /&gt;
&lt;br /&gt;
  Silicon Sculptor&lt;br /&gt;
  FAIL&lt;br /&gt;
  ACTIVE&lt;br /&gt;
  PASS&lt;br /&gt;
  START&lt;br /&gt;
  ACTEL DEVICE PROGRAMMER&lt;br /&gt;
  BP MICROSYSTEMS&lt;br /&gt;
&lt;br /&gt;
==Silicon Sculptor 2==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://www.actel.com/kb/article.aspx?id=SL1039&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*WWAV20 motherboard with pin driver boards (PD8As)&lt;br /&gt;
*286 processor&lt;br /&gt;
*2MB onboard RAM&lt;br /&gt;
*an additional 4MB SIMM to support concurrency&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Markings:&lt;br /&gt;
&lt;br /&gt;
  Silicon Sculptor II&lt;br /&gt;
  Actel&lt;br /&gt;
  FAIL&lt;br /&gt;
  ACTIVE&lt;br /&gt;
  PASS&lt;br /&gt;
  ACTEL DEVICE PROGRAMMER&lt;br /&gt;
  BP MICROSYSTEMS&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_ss2_ext.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_ss2_ext_btm_label.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_ss2_int_mb1.jpg|frameless]]&lt;br /&gt;
[[File:anon_bpm_ss2_int_mb2.jpg|frameless]]&lt;br /&gt;
[[File:anon_bpm_ss2_int_mb3.jpg|frameless]]&lt;br /&gt;
[[File:anon_bpm_ss2_int_mb4.jpg|frameless]]&lt;br /&gt;
[[File:anon_bpm_ss2_int_mb5.jpg|frameless]]&lt;br /&gt;
[[File:anon_bpm_ss2_int_mb6.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_ss2_int_driver.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_ss2_simm.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:anon_bpm_ss2_int_mez.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
===mcmaster notes===&lt;br /&gt;
&lt;br /&gt;
2018-09-12&lt;br /&gt;
&lt;br /&gt;
*Open SS2&lt;br /&gt;
*Think this was the eBay unit?&lt;br /&gt;
*PCB is identical to one used in BP-1600&lt;br /&gt;
*Both have blue bodge wire&lt;br /&gt;
*SS2 has RAM installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actel Silicon Sculptor 3==&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_bpm_ss3_top.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
Above: DO NOT TOUCH!&lt;br /&gt;
&lt;br /&gt;
This appears to be a crippled BP-1410 (however, it has the front-panel button and the 512MB of RAM present in the BP-1710).  No analysis has been done to figure out where the devices differ (firmware, FPGA, host, etc)&lt;br /&gt;
&lt;br /&gt;
Product page: [http://www.microsemi.com/products/fpga-soc/design-resources/programming/silicon-sculptor-3]&lt;br /&gt;
&lt;br /&gt;
I love how they switched from roman numerals to Arabic numbers.  Maybe they&#039;ll call the next one Silicon Sculptor D…&lt;br /&gt;
&lt;br /&gt;
Has 3 headers (left/right/top) that adaptors plug into&lt;br /&gt;
&lt;br /&gt;
Interface: USB&lt;br /&gt;
&lt;br /&gt;
Markings:&lt;br /&gt;
&lt;br /&gt;
  Silicon Sculptor 3&lt;br /&gt;
  Actel&lt;br /&gt;
  FAIL&lt;br /&gt;
  ACTIVE&lt;br /&gt;
  PASS&lt;br /&gt;
  START (button)&lt;br /&gt;
  ACTEL DEVICE PROGRAMMER&lt;br /&gt;
  BP MICROSYSTEMS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===External===&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_actel_ss3_ext_top.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_actel_ss3_ext_btm.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_actel_ss3_ext_side.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Motherboard===&lt;br /&gt;
&lt;br /&gt;
Main assembly:&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_actel_ss3_mb1.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_actel_ss3_mb3.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
Driver board:&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_actel_ss3_cpcbpd8b_rev_b.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Power supply===&lt;br /&gt;
&lt;br /&gt;
[[File:mcmaster_actel_ss3_ps1.jpg|frameless]]&lt;br /&gt;
[[File:mcmaster_actel_ss3_ps2.jpg|frameless]]&lt;/div&gt;</summary>
		<author><name>RH</name></author>
	</entry>
</feed>