Pulseview/Sigrok: Use Hantek 6022bl with 16 channels (Linux/debian)

Hi,

there are several ways to get all 16 channels of a Hantek 6022bl working.

Methode one:
– copy fx2lafw-sigrok-fx2-16ch.fw to fx2lafw-saleae-logic.fw. But for me this is NOT RELIABLE:
This must be done each time you connect the Hantek to the PC!
Backup firmware

1
cp /usr/share/sigrok-firmware/fx2lafw-saleae-logic.fw /usr/share/sigrok-firmware/fx2lafw-saleae-logic.fw.bak

Copy 16 Channel firmware over fx2lafw-saleae-logic.fw

1
cp /usr/share/sigrok-firmware/fx2lafw-sigrok-fx2-16ch.fw /usr/share/sigrok-firmware/fx2lafw-saleae-logic.fw

Load firmware to the device

1
2
3
sigrok-cli --scan
  .....
  fx2lafw:conn=1.15 - Saleae Logic [S/N: Saleae Logic] with 16 channels: D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15

Then ( I ) have to copy the old firmware back

1
cp /usr/share/sigrok-firmware/fx2lafw-saleae-logic.fw.bak /usr/share/sigrok-firmware/fx2lafw-saleae-logic.fw

And pulsview can be started. As I said really applicable.
Methode two:
– Changing the eeprom Hantek 6022bl => To difficult, see this link

In my opinion the best way is to build an own package. But be aware that the full speed of 24Mhz is not reachable with 16 channels.

1
michael@debdev ~ # mkdir fx2lafw-build

Add Source repository to

1
deb-src http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse

to

1
/etc/apt/sources.list.d/official-package-repositories.list

Update repository

1
2
michael@debdev ~ # sudo apt update
michael@debdev ~ # sudo apt install build-essential fakeroot sigrok-cli sigrok-firmware-fx2lafw pulseview

1
2
michael@debdev ~ # cd fx2lafw-build
michael@debdev ~/fx2lafw-build # apt-get source  libsigrok

Install build depedencies

1
2
michael@debdev ~/fx2lafw-build # cd libsigrok-0.5.2
michael@debdev ~/fx2lafw-build/libsigrok-0.5.2 # sudo apt-get build-dep libsigrok

Apply the patch to src/hardware/fx2lafw/api.c

1
michael@debdev ~/fx2lafw-build/libsigrok-0.5.2 #  cp src/hardware/fx2lafw/api.c src/hardware/fx2lafw/api.c.org

Modifing src/hardware/fx2lafw/api.c. Open for edit, go to line 74 and replace

1
0, NULL, NULL},

with

1
DEV_CAPS_16BIT, NULL, NULL},

To create a patch for further usage use:

1
michael@debdev ~/fx2lafw-build/libsigrok-0.5.2 #  diff -Nuar  ~/software/fx2lafw-build-org/libsigrok-0.5.2/src/hardware/fx2lafw/api.c src/hardware/fx2lafw/api.c > ~/fx2lafw.patch > ~/hantek-6022bl-16ch.patch

This creates a file like this

1
2
3
4
5
6
7
8
9
10
11
--- src/hardware/fx2lafw/api.c  2019-12-25 21:29:19.000000000 +0100
+++ src/hardware/fx2lafw/api.c  2025-03-31 20:30:26.463457393 +0200
@@ -71,7 +71,7 @@
         */
        { 0x0925, 0x3881, "Saleae", "Logic", NULL,
                "fx2lafw-saleae-logic.fw",
-               0, NULL, NULL},
+               DEV_CAPS_16BIT, NULL, NULL},
 
        /*
         * Default Cypress FX2 without EEPROM, e.g.:

which can be later applied by

1
michael@debdev ~/fx2lafw-build/libsigrok-0.5.2 # patch -p1 src/hardware/fx2lafw/api.c < ~/hantek-6022bl-16ch.patch

then update the change log

1
2
3
4
5
6
7
michael@debdev ~/fx2lafw-build/libsigrok-0.5.2 #  dch -i
 
libsigrok (0.5.2-5.1ubuntu1) UNRELEASED; urgency=medium
 
  * Build for 16 channel support.
 
 -- Michael Albert <michael@albert-hetzles.de>  Wed, 19 Mar 2025 21:17:34 +0100

Start build

1
2
3
michael@debdev ~/fx2lafw-build/libsigrok-0.5.2 #  dpkg-source --commit
michael@debdev ~/fx2lafw-build/libsigrok-0.5.2 #  dpkg-buildpackage -us -uc
michael@debdev ~/fx2lafw-build/libsigrok-0.5.2 #  cd ..

Remove sigrok and pulseview

1
2
3
4
michael@debdev ~/fx2lafw-build # sudo apt autoremove pulseview and sigrok
michael@debdev ~/fx2lafw-build # sudo apt autoremove libsigrok4
michael@debdev ~/fx2lafw-build # sudo apt autoclean
michael@debdev ~/fx2lafw-build # sudo apt autoremove

Install libsigrok4 and libsigrokcxx4, may be you must adjust the version

1
2
3
michael@debdev ~/fx2lafw-build # ls -l *.deb
michael@debdev ~/fx2lafw-build # sudo dpkg -i libsigrok4t64_0.5.2-5.1ubuntu1_amd64.deb
michael@debdev ~/fx2lafw-build # sudo dpkg -i libsigrokcxx4t64_0.5.2-5.1ubuntu1_amd64.de

And install sigrok again

1
michael@debdev ~/fx2lafw-build # sudo apt install sigrok-cli sigrok-firmware-fx2lafw pulseview

Be aware that the manual installation of deb package could break some update dependencies. If happens: simply remove libsigrok4, update your system and rebuild and install a new libsigrok4.

Michael