'invalid service type' output

Hi,

I am running Joulescope on a Raspberry Pi Model 3B+ with 1GB of RAM. I am testing the ‘capture_simple.py’ example modified to capture for 10sec duration and sometimes I get this ‘invalid service type’ messages. What does it mean? Can I trust the output result? I want to use this script to test some hardware, just changing the capture time, but I want reliable measurements.

pi@tektester:~/joulescope/bin $ python3 capture_simple.py
invalid service type
invalid service type
invalid service type
invalid service type
0.10020232200622559 A, 3.7972707748413086 V
(joulescope) pi@tektester:~/joulescope/bin $

Forgot to add that I am using JS320-0RH6 model v1.6.0.

Hi @rsdp and welcome to the Joulescope forum!

I think that you may be using an older version of pyjoulescope_driver. What do see when you run python -m pyjoulescope_driver info? Here is what I see on Windows:

PS C:\repos\Jetperch\pyjoulescope_examples\bin> python -m pyjoulescope_driver info

    SYSTEM INFORMATION
    ------------------
    python               3.14.3 (tags/v3.14.3:323c59a, Feb  3 2026, 16:04:56) [MSC v.1944 64 bit (AMD64)]
    python impl          CPython
    platform             Windows-11-10.0.26300-SP0
    processor            Intel64 Family 6 Model 183 Stepping 1, GenuineIntel
    CPU cores            24 physical, 32 total
    CPU frequency        3000 MHz (0 MHz min to 3000 MHz max)
    RAM                  45.8 GB available, 63.7 GB total (71.9%)

    PYTHON PACKAGE INFORMATION
    --------------------------
    jls                  0.18.0
    joulescope           1.6.0
    numpy                2.4.6
    pyjoulescope_driver  2.4.1


    JOULESCOPE INFORMATION
    ----------------------
    u/js320/31NB: hw=0.0.1, fw=1.1.8, fpga=1.1.8

Note 2.4.1 and fw 1.1.8.

Hi @mliberty the driver seems to be the latest but not sure about the fw.

pi@tektester:~/joulescope/bin $ python -m pyjoulescope_driver info

SYSTEM INFORMATION
------------------
python               3.13.5 (main, Aug 10 2026, 12:06:59) [GCC 14.2.0]
python impl          CPython
platform             Linux-6.18.50+rpt-rpi-v8-aarch64-with-glibc2.41
processor
CPU cores            4 physical, 4 total
CPU frequency        1400 MHz (600 MHz min to 1400 MHz max)
RAM                  0.7 GB available, 0.9 GB total (74.8%)

PYTHON PACKAGE INFORMATION
--------------------------
jls                  0.18.0
joulescope           1.6.0
numpy                2.5.3
pyjoulescope_driver  2.4.1


JOULESCOPE INFORMATION
----------------------
u/js320/0RH6: could not retrieve details

Do you have the JS320 open in something else, such as the UI? Note that you can only have a Joulescope open in one host application at a time. Close other programs, and try this command again.

If it is out of date, you can run:

python -m pyjoulescope_driver program

After replugging the USB it was able to detect the fw. I’m still getting the ‘invalid service type’ message.

SYSTEM INFORMATION
------------------
python               3.13.5 (main, Aug 10 2026, 12:06:59) [GCC 14.2.0]
python impl          CPython
platform             Linux-6.18.50+rpt-rpi-v8-aarch64-with-glibc2.41
processor
CPU cores            4 physical, 4 total
CPU frequency        1400 MHz (600 MHz min to 1400 MHz max)
RAM                  0.7 GB available, 0.9 GB total (74.7%)

PYTHON PACKAGE INFORMATION
--------------------------
jls                  0.18.0
joulescope           1.6.0
numpy                2.5.3
pyjoulescope_driver  2.4.1


JOULESCOPE INFORMATION
----------------------
u/js320/0RH6: hw=0.0.1, fw=1.1.8, fpga=1.1.8

I have been trying to duplicate this on a Raspberry Pi 5 Model B Rev 1.0 with no luck so far. I modified the capture_simple.py example so that device.read(contiguous_duration=10), but I do not see any invalid service type messages across multiple attempts.

Other than changing contiguous_duration, did you make any other edits to capture_simple.py?

The joulescope_driver emits the invalid service type message here. This can happen if bad data arrives over USB. The message is rejected, so everything else should still work. I wonder if this is some strange behavior of the Raspberry Pi Model 3B+?

I really doubt that this will change anything, but you can try forcing a firmware update:

python -m pyjoulescope_driver program

The firmware updated made no difference. AI is saying it could be the power supply or USB issues. I removed other devices from the USB ports but I’m seeing the same error. I will get another power supply tomorrow just to be sure.
Can you confirm if the RAM on this Pi is sufficient to run the Joulescope?

Yes, but it is likely not enough to run the UI.

Another possible issue is that the RP 3B+ is pretty slow compared to anything that we test on. It should still be able to stream data fast enough, but some latent communication timing issue could cause these warning messages.

I tried with an external power supply set to 3A output and noticed that the message appears when current spikes occur - see the video below. I suspect this Pi model doesn’t supply enough current to the device. I have a RP 4 B used on another project, I will test with it.

Same thing with RP4 (4GB of RAM). Joulescope is connected to a USB3 port. Power supply is the official RP4 adapter.

pi@pi4tester:~/joulescope/bin $ python3 capture_simple.py
invalid service type
8.778516757956822e-08 A, 0.5216395258903503 V
(joulescope) pi@pi4tester:~/joulescope/bin $

SYSTEM INFORMATION
------------------
python               3.13.5 (main, Aug 10 2026, 12:06:59) [GCC 14.2.0]
python impl          CPython
platform             Linux-6.18.50+rpt-rpi-v8-aarch64-with-glibc2.41
processor
CPU cores            4 physical, 4 total
CPU frequency        1500 MHz (600 MHz min to 1500 MHz max)
RAM                  3.3 GB available, 3.7 GB total (89.1%)

PYTHON PACKAGE INFORMATION
--------------------------
jls                  0.18.0
joulescope           1.6.0
numpy                2.5.3
pyjoulescope_driver  2.4.1


JOULESCOPE INFORMATION
----------------------
u/js320/0RH6: hw=0.0.1, fw=1.1.8, fpga=1.1.8

Not sure if it makes any difference but the Joulescope is running on virtual environment. The PI operating system didn’t allow a system installation, like you advise in your documentation ( Installation — joulescope 1.6.0 documentation ).

Do you mean a python venv? Something like:

python -m venv ~/venv/joulescope
. ~/venv/joulescope/bin/activate
python -m pip install -U joulescope

Python virtual environments work great and are well-tested with Joulescopes. Other virtual machine approaches, like Docker, are completely untested.

Yes I meant python virtual environment. I’m not using the UI and not planning to use it on this project.

Is JS320 only suitable for RP5?
Are JS220 and JS110 commercially available still? Were they tested with old RP models?

I think the JS320 should work on RP 4 or 3. I have a Raspberry Pi 4 B that I can try. What OS distribution are you using?

The JS220 and JS110 are obsolete and no longer available. Our only official Linux support is for Ubuntu latest LTS. However, many people have been successful running Joulescopes under other distros & hardware, including Raspberry Pis. We only recently added Linux arm64 binaries to pypi.

@mliberty See below.

pi@pi4tester:~ $ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.7
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
pi@pi4tester:~ $ hostnamectl
 Static hostname: pi4tester
       Icon name: computer
      Machine ID: d34a99aaeea54760b0941c878adc3c90
         Boot ID: 28e837d76a404a24889a73b420286ab1
Operating System: Debian GNU/Linux 13 (trixie)
          Kernel: Linux 6.18.50+rpt-rpi-v8
    Architecture: arm64

I flashed a new SD card for an RP4B, and I am now able to reproduce the issue. It’s not consistent, but it happens enough that I should be able to investigate. Here are several runs of the modified, 10-second-long capture_simple.py:

(joulescope) ci@ci-linux-arm-2:~ $ python capture_simple.py
invalid service type
-1.0746504131020629e-08 A, 0.8014577031135559 V
(joulescope) ci@ci-linux-arm-2:~ $ python capture_simple.py
invalid service type
7.536211654723957e-10 A, 1.7854353189468384 V
(joulescope) ci@ci-linux-arm-2:~ $ python capture_simple.py
-7.972246862664178e-09 A, 2.800898790359497 V
(joulescope) ci@ci-linux-arm-2:~ $ python capture_simple.py
invalid service type
5.140266878811417e-09 A, 1.1420485973358154 V
(joulescope) ci@ci-linux-arm-2:~ $ python capture_simple.py
invalid service type
2.318586656002708e-09 A, 0.14491893351078033 V
(joulescope) ci@ci-linux-arm-2:~ $ python capture_simple.py
4.04953315324974e-09 A, 0.15387819707393646 V
(joulescope) ci@ci-linux-arm-2:~ $ python capture_simple.py
5.0928434802699485e-09 A, 0.2985912561416626 V

Hi @rsdp

Thanks for reporting this, and for the details that let us reproduce it.

We found the cause. It’s a firmware bug in the JS320 that was introduced in firmware 1.1.8. When the JS320 is connected but not streaming, it periodically checks its internal communication link. The JS320 answers that check with a malformed reply, and the host software reports it as “invalid service type.”

The warning is harmless, and you can safely ignore this warning. The malformed reply isn’t measurement data, and the host software discards it.

You see it on the Raspberry Pi and not on other computers mainly because of speed. The check only runs after a short idle period, and the Pi takes long enough between opening the JS320 and starting the capture to trigger it.

We have a fix and have confirmed it on our test hardware. It will be included in the next JS320 firmware release. Until then, no action is needed

We just released JS320 firmware 1.1.9 which fixes this issue. We will not be pushing out this change until our next UI release, but you can manually update. Here is how:

wget https://download.joulescope.com/firmware/js320/js320-1_1_9.zip
python -m pyjoulescope_driver program --package js320-1_1_9.zip

I did encounter this on a Windows system, and updating the FW to 1.1.9 resolved it.
Here’s the system info before updating case it helps. The Joulescope is (unavoidably) on a USB hub which might be a factor in seeing the issue.

SYSTEM INFORMATION

    ------------------

    python               3.14.2 (tags/v3.14.2:df79316, Dec  5 2025, 17:18:21) [MSC v.1944 64 bit (AMD64)]

    python impl          CPython

    platform             Windows-10-10.0.19045-SP0

    processor            Intel64 Family 6 Model 85 Stepping 4, GenuineIntel

    CPU cores            10 physical, 20 total

    CPU frequency        3312 MHz (0 MHz min to 3312 MHz max)

    RAM                  322.5 GB available, 383.7 GB total (84.0%)

 

    PYTHON PACKAGE INFORMATION

    --------------------------

    jls                  0.18.0

    joulescope           1.6.0

    numpy                2.2.6

    pyjoulescope_driver  2.4.1

 

 

    JOULESCOPE INFORMATION

    ----------------------

    u/js320/D794: hw=0.0.1, fw=1.1.8, fpga=1.1.8