Skip to content

Unable to install urh on raspberry pi 5 (Debian 13.2) #1203

@SuppliedOrange

Description

@SuppliedOrange
Expected Behavior

I should be able to run urh

Actual Behavior

I run into different errors.
I tried every method on the readme.

Steps To Reproduce
doog@raspberrypi:~ $ pipx install urh
Fatal error from pip prevented installation. Full pip output in file:
    /home/doog/.local/state/pipx/log/cmd_2026-01-08_19.13.44_pip_errors.log

pip seemed to fail to build package:
    'urh'

Some possibly relevant errors from pip install:
    error: subprocess-exited-with-error
    ERROR: Failed to build 'urh' when getting requirements to build wheel

Error installing urh.

doog@raspberrypi:~ $ xhost +local:docker
non-network local connections being added to access control list

doog@raspberrypi:~ $ sudo docker run --rm \
       -e DISPLAY=${DISPLAY} \
       -v /tmp/.X11-unix:/tmp/.X11-unix \
       -v $HOME:/root \
       --privileged \
       jopohl/urh
Unable to find image 'jopohl/urh:latest' locally
latest: Pulling from jopohl/urh
3629e278a446: Pull complete 
7e49dc6156b0: Pull complete 
Digest: sha256:c2aafbc66c852dfbbce5a7e9c18c71ca26fdd7d1348171c7432eef1ac6b47e4a
Status: Downloaded newer image for jopohl/urh:latest
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
exec /bin/sh: exec format error

doog@raspberrypi:~ $ git clone https://github.com/jopohl/urh/
cd urh/src/urh
PYTHONPATH=.. ./main.py

Cloning into 'urh'...
remote: Enumerating objects: 24957, done.
remote: Counting objects: 100% (589/589), done.
remote: Compressing objects: 100% (389/389), done.
remote: Total 24957 (delta 345), reused 202 (delta 198), pack-reused 24368 (from 4)
Receiving objects: 100% (24957/24957), 54.54 MiB | 9.82 MiB/s, done.
Resolving deltas: 100% (17622/17622), done.
Traceback (most recent call last):
  File "/home/doog/urh/src/urh/./main.py", line 9, in <module>
    from PyQt6.QtCore import QTimer, Qt
ModuleNotFoundError: No module named 'PyQt6'

doog@raspberrypi:~/urh/src/urh $ python -m venv .venv

doog@raspberrypi:~/urh/src/urh $ ./.venv/bin/pip install pyqt6
Downloading pyqt6_sip-13.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (323 kB)
Installing collected packages: PyQt6-Qt6, PyQt6-sip, pyqt6
Successfully installed PyQt6-Qt6-6.10.1 PyQt6-sip-13.10.3 pyqt6-6.10.1

doog@raspberrypi:~/urh/src/urh $ ./.venv/bin/python main.py
Traceback (most recent call last):
  File "/home/doog/urh/src/urh/main.py", line 14, in <module>
    import urh.ui.urh_rc
ModuleNotFoundError: No module named 'urh'

oog@raspberrypi:~/urh $ ./.venv/bin/python setup.py
Skipping native support for airspy
Skipping native support for bladerf
Skipping native support for hackrf
Skipping native support for limesdr
Skipping native support for plutosdr
Found rtlsdr lib. Will compile with native rtlsdr support
Skipping native support for usrp
Skipping native support for sdrplay
Compiling src/urh/cythonext/signal_functions.pyx because it changed.
Compiling src/urh/cythonext/util.pyx because it changed.
Compiling src/urh/cythonext/awre_util.pyx because it changed.
Compiling src/urh/cythonext/path_creator.pyx because it changed.
Compiling src/urh/cythonext/auto_interpretation.pyx because it changed.
Compiling src/urh/dev/native/lib/rtlsdr.pyx because it changed.
[1/6] Cythonizing src/urh/cythonext/auto_interpretation.pyx

Error compiling Cython file:
------------------------------------------------------------
...
# noinspection PyUnresolvedReferences
cimport numpy as np
        ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:2:8: 'numpy.pxd' not found

Error compiling Cython file:
------------------------------------------------------------
...
            if maximum / <double>minimum - (maximum / minimum) < threshold:
                histogram[minimum] += 1

    return histogram

cpdef np.ndarray[np.uint64_t, ndim=1] merge_plateaus(np.ndarray[np.uint64_t, ndim=1] plateaus,
      ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:145:6: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
            if maximum / <double>minimum - (maximum / minimum) < threshold:
                histogram[minimum] += 1

    return histogram

cpdef np.ndarray[np.uint64_t, ndim=1] merge_plateaus(np.ndarray[np.uint64_t, ndim=1] plateaus,
                                                     ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:145:53: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
            i += 1

    return result[:current+1]


cpdef np.ndarray[np.uint64_t, ndim=1] get_plateau_lengths(float[:] rect_data, float center, int percentage=25):
      ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:179:6: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
    try:
        return buffer[k//2]
    finally:
        free(buffer)

cpdef np.ndarray[np.float32_t, ndim=1] median_filter(double[:] data, unsigned int k=3):
      ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:227:6: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
    :param plateau_lengths:
    :return:
    """
    cdef uint64_t i, j, x, y, minimum, maximum, num_lengths = len(plateau_lengths)

    cdef np.ndarray[np.uint64_t, ndim=1] histogram = np.zeros(int(np.max(plateau_lengths)) + 1, dtype=np.uint64)
         ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:124:9: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
    :param plateau_lengths:
    :return:
    """
    cdef uint64_t i, j, x, y, minimum, maximum, num_lengths = len(plateau_lengths)

    cdef np.ndarray[np.uint64_t, ndim=1] histogram = np.zeros(int(np.max(plateau_lengths)) + 1, dtype=np.uint64)
         ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:124:9: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
                                                     uint64_t max_count):
    cdef uint64_t j, n, L = len(plateaus), current = 0, i = 1, tmp_sum
    if L == 0:
        return np.zeros(0, dtype=np.uint64)

    cdef np.ndarray[np.uint64_t, ndim=1] result = np.empty(L, dtype=np.uint64)
         ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:152:9: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
                                                     uint64_t max_count):
    cdef uint64_t j, n, L = len(plateaus), current = 0, i = 1, tmp_sum
    if L == 0:
        return np.zeros(0, dtype=np.uint64)

    cdef np.ndarray[np.uint64_t, ndim=1] result = np.empty(L, dtype=np.uint64)
         ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:152:9: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
        free(buffer)

cpdef np.ndarray[np.float32_t, ndim=1] median_filter(double[:] data, unsigned int k=3):
    cdef long long start, end, i, n = len(data)

    cdef np.ndarray[np.float32_t, ndim=1] result = np.zeros(n, dtype=np.float32)
         ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:230:9: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
        free(buffer)

cpdef np.ndarray[np.float32_t, ndim=1] median_filter(double[:] data, unsigned int k=3):
    cdef long long start, end, i, n = len(data)

    cdef np.ndarray[np.float32_t, ndim=1] result = np.zeros(n, dtype=np.float32)
         ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:230:9: 'ndarray' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...

    while i < L and current < max_count:
        if plateaus[i] <= tolerance:
            # Look ahead to see whether we need to merge a larger window e.g. for 67, 1, 10, 1, 21
            n = 2
            while i + n < L and plateaus[i + n] <= tolerance:
                                           ^
------------------------------------------------------------
src/urh/cythonext/auto_interpretation.pyx:162:43: Compiler crash in OptimizeBuiltinCalls

ModuleNode.body = StatListNode(auto_interpretation.pyx:2:0)
StatListNode.stats[12] = StatListNode(auto_interpretation.pyx:145:0)
StatListNode.stats[0] = CFuncDefNode(auto_interpretation.pyx:145:0,
    args = [...]/3,
    c_compile_guard = '',
    modifiers = [...]/0,
    node_positions = [...]/115,
    outer_attrs = [...]/2,
    overridable = True,
    visibility = 'private')
CFuncDefNode.body = StatListNode(auto_interpretation.pyx:148:4,
    is_terminator = True)
StatListNode.stats[6] = WhileStatNode(auto_interpretation.pyx:158:4)
WhileStatNode.body = StatListNode(auto_interpretation.pyx:159:8)
StatListNode.stats[0] = IfStatNode(auto_interpretation.pyx:159:8)
IfStatNode.if_clauses[0] = IfClauseNode(auto_interpretation.pyx:159:11)
IfClauseNode.body = StatListNode(auto_interpretation.pyx:161:12)
StatListNode.stats[1] = WhileStatNode(auto_interpretation.pyx:162:12)
WhileStatNode.condition = BoolBinopNode(auto_interpretation.pyx:162:28,
    is_temp = True,
    operator = 'and',
    result_is_used = True,
    use_managed_ref = True)
BoolBinopNode.operand2 = BoolBinopResultNode(auto_interpretation.pyx:162:48,
    is_temp = True,
    result_is_used = True,
    use_managed_ref = True)
BoolBinopResultNode.arg = ProxyNode(auto_interpretation.pyx:162:48,
    result_is_used = True,
    use_managed_ref = True)
ProxyNode.arg = CoerceToTempNode(auto_interpretation.pyx:162:48,
    is_temp = 1,
    result_is_used = True,
    use_managed_ref = True)
CoerceToTempNode.arg = PrimaryCmpNode(auto_interpretation.pyx:162:48,
    operator = '<=',
    result_is_used = True,
    use_managed_ref = True)
PrimaryCmpNode.operand1 = IndexNode(auto_interpretation.pyx:162:40,
    is_subscript = True,
    result_is_used = True,
    use_managed_ref = True)
IndexNode.index = AddNode(auto_interpretation.pyx:162:43,
    infix = True,
    operator = '+',
    result_is_used = True,
    use_managed_ref = True)

Compiler crash traceback from this point on:
  File "Cython/Compiler/Visitor.py", line 174, in Cython.Compiler.Visitor.TreeVisitor._visit
  File "Cython/Compiler/Visitor.py", line 538, in Cython.Compiler.Visitor.MethodDispatcherTransform.visit_BinopNode
  File "Cython/Compiler/Visitor.py", line 552, in Cython.Compiler.Visitor.MethodDispatcherTransform._visit_binop_node
AttributeError: 'NoneType' object has no attribute 'is_builtin_type'
Traceback (most recent call last):
  File "/home/doog/urh/setup.py", line 171, in <module>
    ext_modules=get_extensions(),
                ~~~~~~~~~~~~~~^^
  File "/home/doog/urh/setup.py", line 128, in get_extensions
    extensions = cythonize(
        extensions,
        compiler_directives=COMPILER_DIRECTIVES,
        compile_time_env=device_extras,
    )
  File "/home/doog/urh/.venv/lib/python3.13/site-packages/Cython/Build/Dependencies.py", line 1153, in cythonize
    cythonize_one(*args)
    ~~~~~~~~~~~~~^^^^^^^
  File "/home/doog/urh/.venv/lib/python3.13/site-packages/Cython/Build/Dependencies.py", line 1297, in cythonize_one
    raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: src/urh/cythonext/auto_interpretation.pyx

Platform Specifications
  • OS: Debian 13.2
  • URH version: 2.10.0
  • Python version: 3.13
  • Installed via (attempted all methods)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions