Difference between revisions of "Fx2lafw"

From sigrok
Jump to navigation Jump to search
(→‎Hardware overview: "Mollex" USBee AX and Saleae Logic clone.)
(Added WeAct LogicAnalyzerV1)
 
(50 intermediate revisions by 8 users not shown)
Line 1: Line 1:
'''fx2lafw''' is an open-source firmware for Cypress FX2 chips which makes them usable as simple logic analyzer hardware.
{{DISPLAYTITLE:fx2lafw}}
'''fx2lafw''' is an open-source firmware for Cypress FX2 chips which makes them usable as simple logic analyzer and/or oscilloscope hardware.


It is licensed under the terms of the GNU GPL (version 2, or later) and written in C, using [http://sdcc.sourceforge.net/ sdcc] as compiler, and [https://github.com/mulicheng/fx2lib fx2lib] as helper library.
It is licensed under the terms of the '''GNU GPL (version 2, or later)''' and written in C, using [http://sdcc.sourceforge.net/ sdcc] as compiler, and [https://github.com/mulicheng/fx2lib fx2lib] as helper library.


== Hardware overview ==
== Hardware overview ==


The fx2lafw firmware is meant to work on any FX2-based hardware, including logic analyzers, FX2 eval boards, or other hardware which has this chip on-board.
The fx2lafw firmware is meant to work on any FX2-based hardware, including logic analyzers, FX2 eval boards, oscilloscopes, or other hardware which has this chip on-board.


Here's a quick overview of some of the relevant hardware information we have about the various devices:
Here's a quick overview of some of the relevant hardware information we have about the various devices.


{| border="0" style="font-size: smaller"
The devices marked as '''Clone''' are those that clone the USB VID/PID of the original product, and also have no own PC software/firmware, but instead illegally ship the software of the original product/manufacturer.
|- bgcolor="#6699ff"
 
=== Logic Analyzers / mixed-signal devices ===
 
The following logic analyzer / mixed-signal devices are supported (if marked as such) by fx2lafw (and by the [http://sigrok.org/gitweb/?p=libsigrok.git;a=tree;f=src/hardware/fx2lafw fx2lafw] driver in [[libsigrok]]):
 
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
|-
!Device
!Device
!USB VID:PID
!USB VID:PID
!Product type
!Probes (pins)
!Probes (pins)
!FX2 package
!FX2 package
!Buffer/ESD-protection
!Buffer / ESD-protection
!Resistor per probe
!Resistors
!I2C EEPROM
!I2C EEPROM
!Status
!Status


|- bgcolor="#dddddd"
|-
| [https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=https%3A%2F%2Fweb.archive.org%2Fweb%2F20161118003741%2Fhttp%3A%2F%2Fwww.6-lab.com%2Fen%2Flogic-u.html&edit-text=&act=url 6-Lab LOGIC-U]<sup>5</sup>
| ?
| Clone (Logic)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
 
|-
| [https://translate.google.com/translate?hl=en&sl=auto&tl=en&u=https%3A%2F%2Fweb.archive.org%2Fweb%2F20160904063539%2Fhttp%3A%2F%2F6-lab.com%3A80%2Fen%2Flogic-u-plus.html 6-Lab LOGIC-U PLUS]<sup>5</sup>
| ?
| Clone (AX-Pro)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 95%<sup>1</sup>
 
|-
| [https://translate.google.com/translate?hl=en&sl=auto&tl=en&u=https%3A%2F%2Fweb.archive.org%2Fweb%2F20161106073944%2Fhttp%3A%2F%2F6-lab.com%3A80%2Fen%2Flogicupro.html 6-Lab LOGIC-U PRO]<sup>5</sup>
| ?
| Clone (AX-Pro)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 95%<sup>1</sup>
 
|-
| [https://translate.google.com/translate?hl=en&sl=auto&tl=en&u=https%3A%2F%2Fweb.archive.org%2Fweb%2F20160904063550%2Fhttp%3A%2F%2F6-lab.com%3A80%2Fen%2Flogicuisl.html 6-Lab LOGIC-U ISL]<sup>5</sup>
| ?
| Clone (Logic)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
 
|-
| [[ARMFLY AX-Pro]]
| [[ARMFLY AX-Pro]]
| 08a9:0014
| 08a9:0014
| 8 digital (PB0-PB7), 1 analog (PD0-PD7)
| Clone (AX-Pro)
| 8 (+1 analog)
| 56LTXC (QFN)  
| 56LTXC (QFN)  
| ?
| ?
Line 30: Line 83:
| bgcolor="lime" | 95%<sup>1</sup>
| bgcolor="lime" | 95%<sup>1</sup>


|- bgcolor="#dddddd"
|-
| [[ARMFLY Mini-Logic]]<sup>2</sup>
| [[ARMFLY Mini-Logic]]<sup>2</sup>
| 08a9:0014
| 08a9:0014
| 8 (PB0-PB7)
| Clone (AX-Pro w/o scope)
| 8
| 56LTXC (QFN)
| 56LTXC (QFN)
| ?
| ?
Line 40: Line 94:
| bgcolor="lime" | 100%
| bgcolor="lime" | 100%


|- bgcolor="#eeeeee"
|-
| [[Braintechnology USB Interface V2.x]]
| [[Braintechnology USB Interface V2.x]]
| 04b4:8613
| 04b4:8613
| 8/16 (PB0-PB7, PD0-PD7)
| bgcolor="lime" | Eval board
| 8/16
| 56PVXC (SSOP)
| 56PVXC (SSOP)
| none
| none
Line 50: Line 105:
| bgcolor="lime" | 100%
| bgcolor="lime" | 100%


|- bgcolor="#eeeeee"
|-
| [[Braintechnology USB-LPS]]
| [[Braintechnology USB-LPS]]
| 16d0:0498
| 16d0:0498
| 8/16 (PB0-PB7, PD0-PD7)
| bgcolor="lime" | Original product
| 8/16
| 56PVXC (SSOP)
| 56PVXC (SSOP)
| none
| none
Line 60: Line 116:
| bgcolor="lime" | 100%
| bgcolor="lime" | 100%


|- bgcolor="#dddddd"
|-
| [[CWAV BusBee]]
| [[CWAV BusBee]]
| ?
| ?
| bgcolor="lime" | Original product
| 4
| 4
| ?
| ?
Line 70: Line 127:
| bgcolor="red" | TODO
| bgcolor="red" | TODO


|- bgcolor="#dddddd"
|-
| [[CWAV USBee AX-Standard]]
| [[CWAV USBee AX-Standard]]
| [http://www.mikrocontroller.net/topic/136039#1878129 08a9:0012]
| [http://www.mikrocontroller.net/topic/136039#1878129 08a9:0012]
| bgcolor="lime" | Original product
| ?
| ?
| ?
| ?
Line 80: Line 138:
| bgcolor="red" | TODO
| bgcolor="red" | TODO


|- bgcolor="#dddddd"
|-
| [[CWAV USBee AX-Plus]]
| [[CWAV USBee AX-Plus]]
| [http://www.mikrocontroller.net/topic/136039#1878129 08a9:0013]
| [http://www.mikrocontroller.net/topic/136039#1878129 08a9:0013]
| bgcolor="lime" | Original product
| ?
| ?
| ?
| ?
Line 90: Line 149:
| bgcolor="red" | TODO
| bgcolor="red" | TODO


|- bgcolor="#dddddd"
|-
| [[CWAV USBee AX-Pro]]
| [[CWAV USBee AX-Pro]]
| [http://www.mikrocontroller.net/topic/136039#1878129 08a9:0014]
| [http://www.mikrocontroller.net/topic/136039#1878129 08a9:0014]
| 8 digital (PB0-PB7), 1 analog (PD0-PD7)
| bgcolor="lime" | Original product
| 8 (+1 analog)
| ?
| ?
| ?
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 95%<sup>1</sup>
| bgcolor="lime" | 100%


|- bgcolor="#dddddd"
|-
| [[CWAV USBee DX]]
| [[CWAV USBee DX]]
| [http://www.mikrocontroller.net/topic/136039#1878129 08a9:0015]
| [http://www.mikrocontroller.net/topic/136039#1878129 08a9:0015]
| 16 digital, 2 analog
| bgcolor="lime" | Original product
| 16 (+2 analog)
| ?
| ?
| ?
| ?
Line 110: Line 171:
| bgcolor="red" | TODO
| bgcolor="red" | TODO


|- bgcolor="#dddddd"
|-
| [[CWAV USBee EX2]]
| [[CWAV USBee EX2]]
| ?
| ?
| bgcolor="lime" | Original product
| 8
| 8
| ?
| ?
Line 120: Line 182:
| bgcolor="red" | TODO
| bgcolor="red" | TODO


|- bgcolor="#dddddd"
|-
| [[CWAV USBee SX]]
| [[CWAV USBee SX]]
| 08a9:0009
| 08a9:0009
| 8 (PB0-PB7)
| bgcolor="lime" | Original product
| 8
| 56PVXC (SSOP)
| 56PVXC (SSOP)
| none
| none
Line 130: Line 193:
| bgcolor="lime" | 100%
| bgcolor="lime" | 100%


|- bgcolor="#dddddd"
|-
| [[CWAV USBee ZX]]
| [[CWAV USBee ZX]]
| 08a9:0005
| bgcolor="lime" | Original product
| 8
| 56PVXC (SSOP)
| none
| ?
| ?
| 8 (PB0-PB7)
| ?
| ?
| ?
| bgcolor="lime" | 100%
| ?
| ?
| bgcolor="red" | TODO


|- bgcolor="#eeeeee"
|-
| [[EE Electronics ESLA100]]
| [[EE Electronics ESLA100]]
| 0925:3881
| 0925:3881
| 8 (PB0-PB7)
| Clone (Logic)
| 8
| 56LFXC (QFN)
| 56LFXC (QFN)
| NXP 74HC245D
| NXP 74HC245D
Line 150: Line 215:
| bgcolor="lime" | 100%
| bgcolor="lime" | 100%


|- bgcolor="#eeeeee"
|-
| [[EE Electronics ESLA201A]]
| [[EE Electronics ESLA201A]]
| 08a9:0014
| 08a9:0014
| 8 digital (PB0-PB7), 1 analog (PD0-PD7)
| Clone (AX)
| 8 (+1 analog)
| 56LFXC (QFN)
| 56LFXC (QFN)
| none
| none
Line 160: Line 226:
| bgcolor="lime" | 95%<sup>1</sup>
| bgcolor="lime" | 95%<sup>1</sup>


|- bgcolor="#dddddd"
|-
| [[HT USBee-AxPro]]
| 08a9:0014
| Clone (AX)
| 8 (+1 analog)
| 56PVXC (SSOP)
| none
| none
| Microchip 24LC641 + 24LC02B
| bgcolor="lime" | 100%
 
|-
| [http://iteadstudio.com/store/index.php?main_page=product_info&cPath=2&products_id=221 ITead Studio MiniLogic]<sup>4<sup>
| ?
| Clone (Logic, AX w/o scope)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
 
|-
| [http://iteadstudio.com/store/index.php?main_page=product_info&cPath=1&products_id=51 ITead Studio ITDB01]
| ?
| bgcolor="lime" | Eval board
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
 
|-
| [[Lcsoft Mini Board]]
| [[Lcsoft Mini Board]]
| 04b4:8613
| 04b4:8613 / 0925:3881
| 8/16 (PB0-PB7, PD0-PD7)
| Eval board / Clone (Logic)
| 8/16
| 56PVXC (SSOP)
| 56PVXC (SSOP)
| none
| none
| none
| none
| Shenzhen First-Rank Technology T24C128A
| Shenzhen First-Rank Technology T24C128A
| bgcolor="lime" | 100%
|-
| [[MCU123 Saleae Logic clone]]
| 0925:3881
| Clone (Logic)
| 8
| 56PVC (SSOP)
| NXP 74HC245
| 100 Ω
| Atmel AT24C02
| bgcolor="lime" | 100%
|-
| [[MCU123 USBee AX Pro clone]]<sup>2</sup>
| 08a9:0014
| Clone (AX-Pro w/o scope)
| 8
| 56PVXC (SSOP)
| NXP 74HC245
| 100 Ω
| Atmel AT24C02
| bgcolor="lime" | 100%
|-
| [http://www.ebay.co.uk/itm/MDSO-LA-20MHz-USB-Digital-oscilloscope-48M-Sampling-16-channel-logic-analyzer-/251119761248?pt=UK_BOI_Electrical_Test_Measurement_Equipment_ET&hash=item3a77e77760&_uhb=1 MDSO-LA]
| ?
| Clone (SX, AX-Pro)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
|-
| [http://translate.google.com/translate?sl=ru&tl=en&js=n&prev=_t&hl=de&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fwww.rom.by%2Fforum%2FLogicheskij_analizator_signalov_USBee_AX_Saleae_Logic_45&act=url Mollex Logic Analyzer]<sup>3</sup>
| ?
| Clone (Logic, AX w/o scope)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
|-
| [http://translate.google.com/translate?hl=de&sl=zh-CN&tl=en&u=http%3A%2F%2Fitem.taobao.com%2Fitem.htm%3Fid%3D6076642324 Noname Saleae Logic clone I]
| ?
| Clone (Logic)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
|-
| [http://translate.google.com/translate?sl=cs&tl=en&js=n&prev=_t&ie=UTF-8&eotf=1&u=http%3A%2F%2Fpandatron.cz%2F%3F2729%26klon_logickeho_analyzatoru_saleae&act=url Pandatron PLA8] ([https://translate.googleusercontent.com/translate_c?act=url&depth=1&hl=de&ie=UTF8&prev=_t&rurl=translate.google.com&sl=cs&tl=en&u=http://pandatron.cz/%3Fshop%26sla%3D2%26pn%3D90113%26tx%3Dpla8_modul_-_logicky_analyzator_pro_usb&usg=ALkJrhjOD7bJQd1xRz_BFS3hxg31kE7FSQ S], [http://www.ebay.de/itm/USB-Logic-Analyzer-and-decoder-8-CH-10-GS-CY7C68013A-USB-2-0-/221154315071 E])
| ?
| Clone (Logic)
| 8
| 56PVXC (SSOP)
| SN74LVC245APWR
| 100 Ω
| ?
| bgcolor="lime" | 100%
|-
| [http://translate.google.com/translate?sl=ru&tl=en&u=http%3A%2F%2Fpicavr.kr1.ru%2FUSBAnalyzer%2FDigital_USB_Analyzer_v1.html picavr Digital USB Analyzer v1]
| ?
| Clone (Logic, AX w/o scope)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
|-
| [http://translate.google.com/translate?sl=ru&tl=en&u=http%3A%2F%2Fpicavr.kr1.ru%2FUSBAnalyzer%2FAD_USB_Analyzer_v2.html picavr A/D USB Analyzer v2]
| ?
| Clone (Logic, AX)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 95%<sup>1</sup>
| bgcolor="lime" | 95%<sup>1</sup>


|- bgcolor="#dddddd"
|-
| [http://translate.google.com/translate?sl=ru&tl=en&js=n&prev=_t&hl=de&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fwww.rom.by%2Fforum%2FLogicheskij_analizator_signalov_USBee_AX_Saleae_Logic_45&act=url Mollex Logic Analyzer]<sup>3</sup>
| [http://translate.google.com/translate?sl=ru&tl=en&u=http%3A%2F%2Fpicavr.kr1.ru%2FUSBAnalyzer%2FAD_USB_Analyzer_v3.html picavr A/D USB Analyzer v3]
| ?
| Clone (Logic, AX)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 95%<sup>1</sup>
 
|-
| [http://translate.google.com/translate?sl=ru&tl=en&u=http%3A%2F%2Fpicavr.kr1.ru%2FUSBAnalyzer%2FAD_USB_Analyzer_v4.html picavr A/D USB Analyzer v4]
| ?
| Clone (Logic, AX)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 95%<sup>1</sup>
 
|-
| [http://lab.robomotic.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=22&category_id=6&vmcchk=1&option=com_virtuemart&Itemid=56 Robomotic BugLogic 2]
| ?
| ?
| Clone (Logic, SX/ZX)
| ?
| ?
| ?
| ?
Line 178: Line 389:
| ?
| ?
| ?
| ?
| bgcolor="red" | TODO
| bgcolor="lime" | 100%


|- bgcolor="#eeeeee"
|-
| [[Robomotic BugLogic 3]]
| [[Robomotic BugLogic 3]]
| 0925:3881
| 0925:3881
| 8 (PB0-PB7)
| Clone (Logic)
| 8
| ?
| ?
| ?
| ?
Line 190: Line 402:
| bgcolor="lime" | 100%
| bgcolor="lime" | 100%


|- bgcolor="#eeeeee"
|-
| [[Robomotic MiniLogic]]
| [[Robomotic MiniLogic]]
| 0925:3881
| 0925:3881
| 8 (PB0-PB7)
| Clone (Logic, AX w/o scope)
| 8
| 56PVXC (SSOP)
| 56PVXC (SSOP)
| 74HC244A
| 74HC244A
Line 200: Line 413:
| bgcolor="lime" | 100%
| bgcolor="lime" | 100%


|- bgcolor="#dddddd"
|-
| [http://lab.robomotic.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=26&category_id=6&vmcchk=1&option=com_virtuemart&Itemid=56 Robomotic XZL024]<sup>7</sup>
| 08a9:0014
| Clone (AX-Pro)
| 8 (+2 analog)
| 56LTXC (QFN)
| ?
| 100 Ω
| Atmel 24C02N
| bgcolor="lime" | 95%<sup>1</sup>
 
|-
| [[Saleae Logic]]
| [[Saleae Logic]]
| 0925:3881
| 0925:3881
| 8 (PB0-PB7)
| bgcolor="lime" | Original product
| 8
| 56PVXC (SSOP)
| 56PVXC (SSOP)
| ST DVIULC6-4SC6
| ST DVIULC6-4SC6
Line 209: Line 434:
| ?
| ?
| bgcolor="lime" | 100%
| bgcolor="lime" | 100%
|-
| [[Sysclk AX-Pro]]
| 08a9:0014
| Clone (AX)
| 8 (+2 analog)
| 56LTXC (QFN)
| none
| ?
| Atmel AT24C02N
| bgcolor="lime" | 100%
|-
| [http://www.wholesale-in-china.org/articles/article-194265.htm Sysclk Box]
| ?
| Clone (SX, AX-Pro w/o scope)
| ?
| ?
| ?
| ?
| ?
| bgcolor="lime" | 100%
|-
| [https://github.com/WeActStudio/LogicAnalyzerV1 WeAct LogicAnalyzerV1]<sup>9</sup>
| 1d50:608c
| bgcolor="lime" | Eval board
| 8
| QFN56
| SN74LVC541APWRG4
| ?
| CAT24C256YI-GT3
| bgcolor="lime" | 100%
|-
| [[XZL_Studio AX]]<sup>6</sup>
| 08a9:0014
| Clone (AX-Pro)
| 8 (+2 analog)
| 56LTXC (QFN)
| ?
| 100 Ω
| Atmel 24C02N
| bgcolor="lime" | 95%<sup>1</sup>
|-
| [[XZL Studio DX]]
| 2x 08a9:0015
| Clone (DX)
| 16 (+2 analog)
| 56PVXC (SSOP)
| none
| 390 Ω
| Atmel ATML H136 24C02C M Y
| bgcolor="lime" | 90%<sup>1</sup><sup>8</sup>


|}
|}


All devices use a 24MHz crystal.
All devices use a 24MHz crystal. For 8 probes the FX2 pins PB0-PB7 are used, for 16 probes PB0-PB7 and PD0-PD7. For analog support PD0-PD7 (plus additional hardware) is usually used.


<small>
<sup>1</sup> Analog signal support is not yet implemented.<br />
<sup>1</sup> Analog signal support is not yet implemented.<br />
<sup>2</sup> Even though this devices has the same USB VID/PID as the CWAV USBee AX-Pro, it only has 8 channels and no analog support.<br />
<sup>2</sup> Even though this device has the same USB VID/PID as the CWAV USBee AX-Pro, it only has 8 channels and no analog support.<br />
<sup>3</sup> Clone of the USBee AX and Saleae Logic. "Mollex" is the name of the guy who seems to sell it on a Russian forum.<br />
<sup>3</sup> Clone of the USBee AX and Saleae Logic. "Mollex" is the name of the guy who seems to sell it on some forum.<br />
<sup>4</sup> Clone of the USBee AX (SX?) and Saleae Logic, see also [http://iteadstudio.com/copied/hack-a-saleae-logic-analyzer/ here] and [http://iteadstudio.com/produce/seleae-logic-usbee-ax-usb-blaster/ here]. Dissection by a user [http://www.todopic.com.ar/foros/index.php?topic=32657.0 here]. Seems to be the same hardware as the [[Robomotic MiniLogic]].<br />
<sup>5</sup> It seems 6-Labs [http://electronicsjunk.com/index.php?option=com_content&view=article&id=52:saleae-logic-analyzer-&catid=34:electronics&Itemid=59 has/had permission from Saleae] to distribute the hardware in Ukraine (only)? [http://translate.google.com/translate?sl=ru&tl=en&u=http%3A%2F%2F6-lab.com%2Fen%2Flogic-u-adapters.html Various adapters] are available, for example RS422/RS232/CAN, galvanic isolation, "BNC divider".<br />
<sup>6</sup> There is apparently [http://we.easyelectronics.ru/Turtleblast/poluchil-xzl-studio-ax.html#comment53143 a post from the author of XZL-Studio AX] in some forum.<br />
<sup>7</sup> There's [http://lab.robomotic.com/shop?page=shop.product_details&flypage=flypage.tpl&product_id=27&category_id=6 an RS232/RS485/RS422/CAN converter board] for this.<br />
<sup>8</sup> Digital channels have invalid numbers, check [[XZL Studio DX]] for details.<br />
<sup>9</sup> Uses Corebai CBM9002A (Cypress CY7C68013A clone)
</small>
 
=== Oscilloscopes ===
 
The following oscilloscope devices are supported (if marked as such) by fx2lafw (and by the [http://sigrok.org/gitweb/?p=libsigrok.git;a=tree;f=src/hardware/hantek-6xxx hantek-6xxx] driver in [[libsigrok]]):
 
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
|-
!Device
!USB VID:PID
!Product type
!Analog ch.
!Logic ch.
!Coupling
!FX2 package
!Buffer / ESD-protection
!Resistors
!I2C EEPROM
!Status
 
|-
| [[Hantek 6022BE]]<sup>2</sup>
| 04b4:6022
| bgcolor="lime" | Original product
| 2
| &mdash;
| DC only
| 100AXC (TQFP)
| &mdash;
| &mdash;
| Microchip 24LC02BI
| bgcolor="lime" | 100%
 
|-
| [[Hantek 6022BL]]
| 04b4:602a or 0925:3881
| bgcolor="lime" | Original product
| 2
| 8/16
| AC/DC
| 100AXC (TQFP)
| TI SN74LVC16245A
| 300 Ω
| 2x Microchip 24LC02BI
| bgcolor="lime" | 100%
 
|-
| [[Instrustar ISDS205A]]
| d4a2:5661
| bgcolor="lime" | Original product
| 2
| &mdash;
| AC/DC
| 56PVXC (SSOP)
| &mdash;
| &mdash;
| Microchip 24LC64I
| bgcolor="red" | 0%
 
|-
| [[Instrustar ISDS205X]]
| d4a2:5661 or 0925:3881
| bgcolor="lime" | Original product
| 2 + 1
| 8/16
| AC/DC
| 56PVXC (SSOP)
| TI SN74LVC16245A
| 1 MΩ
| 2x Microchip 24LC02B
| bgcolor="red" | 0%
 
|-
| [[YiXingDianZi MDSO]]
| d4a2:5660
| bgcolor="lime" | Original product
| 2
| &mdash;
| DC only
| 56PVXC (SSOP)
| &mdash;
| &mdash;
| Microchip 24LC64I
| bgcolor="orange" | 90%
 
|-
| [[Rocktech BM102]]<sup>1</sup>
| 8102:8102
| bgcolor="lime" | Original product
| 2
| &mdash;
| AC/DC
| 100AXC (TQFP)
| &mdash;
| &mdash;
| Microchip 24LC64I
| bgcolor="lime" | 100%
 
|-
| [[SainSmart DDS120]]<sup>1</sup>
| 8102:8102
| bgcolor="lime" | Original product
| 2
| &mdash;
| AC/DC
| 100AXC (TQFP)
| &mdash;
| &mdash;
| Microchip 24LC64I
| bgcolor="lime" | 100%
 
|-
| [[SainSmart DDS140]]
| 8312:8312 or 04b4:8613
| bgcolor="lime" | Original product
| 2
| ?
| AC/DC
| 100AXC (TQFP)
| ?
| ?
| Microchip 24LC64I
| bgcolor="red" | 0%
 
|-
| [[Voltcraft DSO-2020]]<sup>2</sup>
| 04b4:2020
| bgcolor="lime" | Original product
| 2
| &mdash;
| DC only
| 100AXC (TQFP)
| &mdash;
| &mdash;
| Microchip 24LC02BI
| bgcolor="red" | 0%
 
|}
 
<small>
<sup>1</sup> The [[Rocktech BM102]] is a rebadged [[SainSmart DDS120]] (or vice versa).<br />
<sup>1</sup> The [[Voltcraft DSO-2020]] is a rebadged [[Hantek 6022BE]].<br />
</small>


== Download ==
== Download ==


  $ '''git clone git://sigrok.git.sourceforge.net/gitroot/sigrok/fx2lafw'''
Released versions of the source code can be downloaded here:
 
  http://sigrok.org/download/source/sigrok-firmware-fx2lafw/
 
There are also '''pre-built firmware files''' that can be used without having to build them from source:
 
  http://sigrok.org/download/binary/sigrok-firmware-fx2lafw/
 
Or you can get the latest development snapshot of the source code from git:
 
  $ '''git clone git://sigrok.org/sigrok-firmware-fx2lafw'''
 
You can also [http://sigrok.org/gitweb/?p=sigrok-firmware-fx2lafw.git;a=tree browse the source code] via gitweb.


== Usage ==
== Usage ==
Line 226: Line 668:
=== Build sigrok ===
=== Build sigrok ===


* Build and install a sigrok frontend (CLI or GUI) with libsigrok >= 0.1.1 (or latest git HEAD) for your platform as usual, see e.g. [[Linux]], [[Mac OS X]], [[FreeBSD]], or [[Windows]].
* Build and install a [[libsigrok]] frontend (CLI or GUI) with libsigrok >= 0.1.1 (or latest git HEAD) for your platform as usual, see [[Building]].


=== Install the udev rules file ===
=== Install the udev rules file ===


These steps prevent the need to run sigrok as superuser.
These steps prevent the need to run libsigrok frontends as superuser.


* Copy the udev rules file from '''sigrok/libsigrok/contrib/z60_libsigrok.rules''' to '''/etc/udev/rules.d/'''.
* Copy the udev rules file from '''libsigrok/contrib/60-libsigrok.rules''' to '''/etc/udev/rules.d/'''
* Restart udev: '''sudo /etc/init.d/udev restart'''.
* Install either '''61-libsigrok-uaccess.rules''' or '''61-libsigrok-plugdev.rules''' to the same directory.
 
The '''61-libsigrok-uaccess.rules''' is typically used on a system using the systemd/logind mechanism to grant access to plugged in devices to the currently active user. '''61-libsigrok-plugdev.rules''' grants access to all users in the ''plugdev'' group. The latter may also serve
as a template for creating a local, system specific access rule.


=== Build fx2lafw ===
=== Build fx2lafw ===


  $ '''cd fx2lafw'''
  $ '''cd sigrok-firmware-fx2lafw'''
  $ '''git clone git://github.com/mulicheng/fx2lib.git'''
  $ '''./autogen.sh'''
$ '''./configure'''
  $ '''make'''
  $ '''make'''
  $ '''sudo cp hw/*/build/*.fw /usr/local/share/sigrok-firmware/'''
  $ '''sudo make install'''
 
This will install the firmware files into '''/usr/local/share/sigrok-firmware/''', per default.
 
=== Pre-built firmware files ===


Where '''/usr/local''' is your installation prefix.
There are also pre-built firmware files that can be used without having to build them from source (see [[#Download|above]]).


=== Test ===
== Cypress FX2 vs. FX2LP ==


$ '''sigrok-cli -D'''
Various devices supported by fx2lafw can use either the older Cypress CY7C68013 (FX2) or the more recent Cypress CY7C68013A (FX2LP).


If everything has worked, sigrok can now see your fx2lafw device, ready for use.
There are [http://www.cypress.com/?id=4&rID=31723 various differences] between the two ICs, see [http://www.cypress.com/?rID=12968 AN4078 - Migrating From EZ-USB FX2 to EZ-USB FX2LP] ([http://www.cypress.com/?docID=39449 PDF]) for the details.


== TODO ==
There are known cases of e.g. the [[CWAV USBee SX]] having shipped with an FX2 at some point, and more recent units shipping with an FX2LP. Also, it's not too uncommon that some FX2 "eval board" or clone of an existing logic analyser (e.g. [[CWAV USBee SX]] or [[Saleae Logic]] ones) has "CY7C68013A (FX2LP)" chip markings, but in reality it really is an older "CY7C68013 (FX2)".


* <del>Digital sampling with 16 channels</del>
The fx2lafw firmware supports both devices (FX2 and FX2LP).
* Analog sampling
** 1-channel
** 2-channel
** Voltage meter
* Trigger pin
* Clock input
* Clock output
* Frequency/pulse counter
* Signal generator


== Resources ==
== Resources ==


* [http://sigrok.git.sourceforge.net/git/gitweb.cgi?p=sigrok/fx2lafw;a=tree Browse Source Code]
* [http://sdcc.sourceforge.net/ sdcc] (C compiler for 8051 microcontrollers, usable for FX2)
* [http://sdcc.sourceforge.net/ sdcc] (C compiler for 8051 microcontrollers, usable for FX2)
* fx2lib: [http://sourceforge.net/projects/fx2lib/ SF project page], [http://allmybrain.com/2008/12/05/an-open-source-library-for-writing-firmware-on-the-cypress-fx2-with-sdcc/ blog article], [https://github.com/mulicheng/fx2lib github repo], [http://sourceforge.net/mailarchive/forum.php?forum_name=fx2lib-devel mailing list]
* fx2lib: [http://sourceforge.net/projects/fx2lib/ SF project page], [http://allmybrain.com/2008/12/05/an-open-source-library-for-writing-firmware-on-the-cypress-fx2-with-sdcc/ blog article], [https://github.com/mulicheng/fx2lib github repo], [http://sourceforge.net/mailarchive/forum.php?forum_name=fx2lib-devel mailing list]
* [http://www.cypress.com/?id=193 Cypress FX2] docs:
* [http://www.cypress.com/?id=193 Cypress FX2] docs:
** [http://www.cypress.com/?rID=38801 CY7C68013A, CY7C68014A, CY7C68015A, CY7C68016A datasheet] ([http://www.cypress.com/?docID=30172 PDF])
** [http://www.cypress.com/?rID=38801 CY7C68013A, CY7C68014A, CY7C68015A, CY7C68016A datasheet] ([http://www.cypress.com/file/138911/download PDF])
** [http://www.cypress.com/?rID=38232 EZ-USB Technical Reference Manual (TRM)] ([http://www.cypress.com/?docID=27095&dlm=1 PDF])
** [http://www.cypress.com/?rID=38232 EZ-USB Technical Reference Manual (TRM)] ([http://www.cypress.com/file/126446/download PDF])
** [http://www.cypress.com/?id=193&rtID=76 EZ-USB FX2LP appnotes]
** [http://www.cypress.com/?id=193&rtID=76 EZ-USB FX2LP appnotes]
** [http://www.cypress.com/?id=193&rtID=111 EZ-USB FX2LP errata]
** [http://www.cypress.com/?id=193&rtID=111 EZ-USB FX2LP errata]
** [http://www.cypress.com/?rID=14448 GPIF Designer] (Windows software, requires login)
** [http://www.cypress.com/?rID=14448 GPIF Designer] (Windows software, requires login)
*** [http://www.cypress.com/?rID=14319 CY3681 EZ-USB FX2 Development Kit] (GPIF designer downloadable without login)
*** [http://www.cypress.com/?rID=14319 CY3681 EZ-USB FX2 Development Kit] (GPIF designer downloadable without login)
** [http://www.cypress.com/?rID=12968 AN4078 - Migrating From EZ-USB FX2 to EZ-USB FX2LP] ([http://www.cypress.com/?docID=39449 PDF])

Latest revision as of 01:13, 14 February 2024

fx2lafw is an open-source firmware for Cypress FX2 chips which makes them usable as simple logic analyzer and/or oscilloscope hardware.

It is licensed under the terms of the GNU GPL (version 2, or later) and written in C, using sdcc as compiler, and fx2lib as helper library.

Hardware overview

The fx2lafw firmware is meant to work on any FX2-based hardware, including logic analyzers, FX2 eval boards, oscilloscopes, or other hardware which has this chip on-board.

Here's a quick overview of some of the relevant hardware information we have about the various devices.

The devices marked as Clone are those that clone the USB VID/PID of the original product, and also have no own PC software/firmware, but instead illegally ship the software of the original product/manufacturer.

Logic Analyzers / mixed-signal devices

The following logic analyzer / mixed-signal devices are supported (if marked as such) by fx2lafw (and by the fx2lafw driver in libsigrok):

Device USB VID:PID Product type Probes (pins) FX2 package Buffer / ESD-protection Resistors I2C EEPROM Status
6-Lab LOGIC-U5 ? Clone (Logic) ? ? ? ? ? 100%
6-Lab LOGIC-U PLUS5 ? Clone (AX-Pro) ? ? ? ? ? 95%1
6-Lab LOGIC-U PRO5 ? Clone (AX-Pro) ? ? ? ? ? 95%1
6-Lab LOGIC-U ISL5 ? Clone (Logic) ? ? ? ? ? 100%
ARMFLY AX-Pro 08a9:0014 Clone (AX-Pro) 8 (+1 analog) 56LTXC (QFN) ? 100 Ω Atmel ATML920 24C02N SU27 D 95%1
ARMFLY Mini-Logic2 08a9:0014 Clone (AX-Pro w/o scope) 8 56LTXC (QFN) ? 100 Ω Atmel ATML920 24C02N SU27 D 100%
Braintechnology USB Interface V2.x 04b4:8613 Eval board 8/16 56PVXC (SSOP) none none Microchip 24LC64I 100%
Braintechnology USB-LPS 16d0:0498 Original product 8/16 56PVXC (SSOP) none ? 68 Ω Atmel ATML0816 TINY13 20SU 100%
CWAV BusBee ? Original product 4 ? ? ? ? TODO
CWAV USBee AX-Standard 08a9:0012 Original product ? ? ? ? ? TODO
CWAV USBee AX-Plus 08a9:0013 Original product ? ? ? ? ? TODO
CWAV USBee AX-Pro 08a9:0014 Original product 8 (+1 analog) ? ? ? ? 100%
CWAV USBee DX 08a9:0015 Original product 16 (+2 analog) ? ? ? ? TODO
CWAV USBee EX2 ? Original product 8 ? ? ? ? TODO
CWAV USBee SX 08a9:0009 Original product 8 56PVXC (SSOP) none 560 Ω Microchip 24LC01B 100%
CWAV USBee ZX 08a9:0005 Original product 8 56PVXC (SSOP) none ? ? 100%
EE Electronics ESLA100 0925:3881 Clone (Logic) 8 56LFXC (QFN) NXP 74HC245D 100 Ω Atmel ATMLH911 02B 1 100%
EE Electronics ESLA201A 08a9:0014 Clone (AX) 8 (+1 analog) 56LFXC (QFN) none 100 Ω Atmel ATMLH113 95%1
HT USBee-AxPro 08a9:0014 Clone (AX) 8 (+1 analog) 56PVXC (SSOP) none none Microchip 24LC641 + 24LC02B 100%
ITead Studio MiniLogic4 ? Clone (Logic, AX w/o scope) ? ? ? ? ? 100%
ITead Studio ITDB01 ? Eval board ? ? ? ? ? 100%
Lcsoft Mini Board 04b4:8613 / 0925:3881 Eval board / Clone (Logic) 8/16 56PVXC (SSOP) none none Shenzhen First-Rank Technology T24C128A 100%
MCU123 Saleae Logic clone 0925:3881 Clone (Logic) 8 56PVC (SSOP) NXP 74HC245 100 Ω Atmel AT24C02 100%
MCU123 USBee AX Pro clone2 08a9:0014 Clone (AX-Pro w/o scope) 8 56PVXC (SSOP) NXP 74HC245 100 Ω Atmel AT24C02 100%
MDSO-LA ? Clone (SX, AX-Pro) ? ? ? ? ? 100%
Mollex Logic Analyzer3 ? Clone (Logic, AX w/o scope) ? ? ? ? ? 100%
Noname Saleae Logic clone I ? Clone (Logic) ? ? ? ? ? 100%
Pandatron PLA8 (S, E) ? Clone (Logic) 8 56PVXC (SSOP) SN74LVC245APWR 100 Ω ? 100%
picavr Digital USB Analyzer v1 ? Clone (Logic, AX w/o scope) ? ? ? ? ? 100%
picavr A/D USB Analyzer v2 ? Clone (Logic, AX) ? ? ? ? ? 95%1
picavr A/D USB Analyzer v3 ? Clone (Logic, AX) ? ? ? ? ? 95%1
picavr A/D USB Analyzer v4 ? Clone (Logic, AX) ? ? ? ? ? 95%1
Robomotic BugLogic 2 ? Clone (Logic, SX/ZX) ? ? ? ? ? 100%
Robomotic BugLogic 3 0925:3881 Clone (Logic) 8 ? ? ? ? 100%
Robomotic MiniLogic 0925:3881 Clone (Logic, AX w/o scope) 8 56PVXC (SSOP) 74HC244A ? 2x Microchip 24LC02BI, 1x 24LC64I 100%
Robomotic XZL0247 08a9:0014 Clone (AX-Pro) 8 (+2 analog) 56LTXC (QFN) ? 100 Ω Atmel 24C02N 95%1
Saleae Logic 0925:3881 Original product 8 56PVXC (SSOP) ST DVIULC6-4SC6 ? ? 100%
Sysclk AX-Pro 08a9:0014 Clone (AX) 8 (+2 analog) 56LTXC (QFN) none ? Atmel AT24C02N 100%
Sysclk Box ? Clone (SX, AX-Pro w/o scope) ? ? ? ? ? 100%
WeAct LogicAnalyzerV19 1d50:608c Eval board 8 QFN56 SN74LVC541APWRG4 ? CAT24C256YI-GT3 100%
XZL_Studio AX6 08a9:0014 Clone (AX-Pro) 8 (+2 analog) 56LTXC (QFN) ? 100 Ω Atmel 24C02N 95%1
XZL Studio DX 2x 08a9:0015 Clone (DX) 16 (+2 analog) 56PVXC (SSOP) none 390 Ω Atmel ATML H136 24C02C M Y 90%18

All devices use a 24MHz crystal. For 8 probes the FX2 pins PB0-PB7 are used, for 16 probes PB0-PB7 and PD0-PD7. For analog support PD0-PD7 (plus additional hardware) is usually used.

1 Analog signal support is not yet implemented.
2 Even though this device has the same USB VID/PID as the CWAV USBee AX-Pro, it only has 8 channels and no analog support.
3 Clone of the USBee AX and Saleae Logic. "Mollex" is the name of the guy who seems to sell it on some forum.
4 Clone of the USBee AX (SX?) and Saleae Logic, see also here and here. Dissection by a user here. Seems to be the same hardware as the Robomotic MiniLogic.
5 It seems 6-Labs has/had permission from Saleae to distribute the hardware in Ukraine (only)? Various adapters are available, for example RS422/RS232/CAN, galvanic isolation, "BNC divider".
6 There is apparently a post from the author of XZL-Studio AX in some forum.
7 There's an RS232/RS485/RS422/CAN converter board for this.
8 Digital channels have invalid numbers, check XZL Studio DX for details.
9 Uses Corebai CBM9002A (Cypress CY7C68013A clone)

Oscilloscopes

The following oscilloscope devices are supported (if marked as such) by fx2lafw (and by the hantek-6xxx driver in libsigrok):

Device USB VID:PID Product type Analog ch. Logic ch. Coupling FX2 package Buffer / ESD-protection Resistors I2C EEPROM Status
Hantek 6022BE2 04b4:6022 Original product 2 DC only 100AXC (TQFP) Microchip 24LC02BI 100%
Hantek 6022BL 04b4:602a or 0925:3881 Original product 2 8/16 AC/DC 100AXC (TQFP) TI SN74LVC16245A 300 Ω 2x Microchip 24LC02BI 100%
Instrustar ISDS205A d4a2:5661 Original product 2 AC/DC 56PVXC (SSOP) Microchip 24LC64I 0%
Instrustar ISDS205X d4a2:5661 or 0925:3881 Original product 2 + 1 8/16 AC/DC 56PVXC (SSOP) TI SN74LVC16245A 1 MΩ 2x Microchip 24LC02B 0%
YiXingDianZi MDSO d4a2:5660 Original product 2 DC only 56PVXC (SSOP) Microchip 24LC64I 90%
Rocktech BM1021 8102:8102 Original product 2 AC/DC 100AXC (TQFP) Microchip 24LC64I 100%
SainSmart DDS1201 8102:8102 Original product 2 AC/DC 100AXC (TQFP) Microchip 24LC64I 100%
SainSmart DDS140 8312:8312 or 04b4:8613 Original product 2 ? AC/DC 100AXC (TQFP) ? ? Microchip 24LC64I 0%
Voltcraft DSO-20202 04b4:2020 Original product 2 DC only 100AXC (TQFP) Microchip 24LC02BI 0%

1 The Rocktech BM102 is a rebadged SainSmart DDS120 (or vice versa).
1 The Voltcraft DSO-2020 is a rebadged Hantek 6022BE.

Download

Released versions of the source code can be downloaded here:

 http://sigrok.org/download/source/sigrok-firmware-fx2lafw/

There are also pre-built firmware files that can be used without having to build them from source:

 http://sigrok.org/download/binary/sigrok-firmware-fx2lafw/

Or you can get the latest development snapshot of the source code from git:

$ git clone git://sigrok.org/sigrok-firmware-fx2lafw

You can also browse the source code via gitweb.

Usage

Build sigrok

  • Build and install a libsigrok frontend (CLI or GUI) with libsigrok >= 0.1.1 (or latest git HEAD) for your platform as usual, see Building.

Install the udev rules file

These steps prevent the need to run libsigrok frontends as superuser.

  • Copy the udev rules file from libsigrok/contrib/60-libsigrok.rules to /etc/udev/rules.d/
  • Install either 61-libsigrok-uaccess.rules or 61-libsigrok-plugdev.rules to the same directory.

The 61-libsigrok-uaccess.rules is typically used on a system using the systemd/logind mechanism to grant access to plugged in devices to the currently active user. 61-libsigrok-plugdev.rules grants access to all users in the plugdev group. The latter may also serve as a template for creating a local, system specific access rule.

Build fx2lafw

$ cd sigrok-firmware-fx2lafw
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

This will install the firmware files into /usr/local/share/sigrok-firmware/, per default.

Pre-built firmware files

There are also pre-built firmware files that can be used without having to build them from source (see above).

Cypress FX2 vs. FX2LP

Various devices supported by fx2lafw can use either the older Cypress CY7C68013 (FX2) or the more recent Cypress CY7C68013A (FX2LP).

There are various differences between the two ICs, see AN4078 - Migrating From EZ-USB FX2 to EZ-USB FX2LP (PDF) for the details.

There are known cases of e.g. the CWAV USBee SX having shipped with an FX2 at some point, and more recent units shipping with an FX2LP. Also, it's not too uncommon that some FX2 "eval board" or clone of an existing logic analyser (e.g. CWAV USBee SX or Saleae Logic ones) has "CY7C68013A (FX2LP)" chip markings, but in reality it really is an older "CY7C68013 (FX2)".

The fx2lafw firmware supports both devices (FX2 and FX2LP).

Resources