Commit Graph

29 Commits

Author SHA1 Message Date
Jörg Hofrichter
d539960867 mpm: use flag locked_fpga=True for L variant devices 2026-08-25 22:03:46 +01:00
Jörg Hofrichter
eb21a19deb mpm: expose customizable_fpga flag 2026-08-10 16:40:53 +02:00
Abhishek Verma
e24b1cb8bb host/mpm: replace mpRPC with gRPC transport
host:
Replace the msgpack-RPC (rpclib) client with a gRPC-based
implementation. Add auto-generated C++ client and Python bindings
from protobuf definitions. Remove rpclib dependency and integrate
FindgRPC into CMake.

mpm:
Replace the msgpack-RPC server with a gRPC server generated from
protobuf definitions. Add pb_utils.py for type conversion between
Python and protobuf. Update rpc_server.py to dispatch calls via
gRPC stubs. Update mpm_shell to use gRPC. Replace pyudev with sysfs
scan in uio device discovery.

Bump MPM compatibility number to 7.0 and RPC version to 2.

This change requires new depedencies. E.g. for Ubuntu 24.04 or 25.10:
libgrpc++-dev, libprotobuf-dev, protobuf-compiler-grpc, python3-grpcio
2026-07-09 12:12:04 +02:00
Martin Braun
2d430f98c3 mpm: Add rpc_version key in device find routine
This adds a new key to the discovery information coming from MPM
devices (rpc_version). The purpose of this is to smooth a transition to
alternative RPC subsystems other than mprpc.

If a device reports a different RPC version than supported by UHD, it
can still be found, but cannot be used for UHD sessions.
2026-04-09 10:23:59 +02:00
Jörg Hofrichter
e147f1e134 mpm: apply "ni-python-styleguide fix" to usrp_mpm 2026-02-04 14:02:15 +01:00
Lars Amsel
342e031a9f mpm: Make setproctitle optional
setproctitle is not available by default on our embedded systems. We therefore use it only if the module is installed and leave the title as is otherwise.
To get the process title one has to install setproctitle via pip and then restart MPM.
2025-02-12 11:31:01 +01:00
Lars Amsel
948c31387d mpm: Set names for all MPM processes
During debug, it is often helpful to distinguish the processes by
name. By default, Python processes inherit the name of the parent,
which is the name of the script executed. This change sets explicit
names for all our MPM processes.
2025-02-10 18:47:57 +01:00
Lars Amsel
cdeb0a4b4c mpm: Fix linter issue
This fixes linter issues for the upcoming changes to MPM.
2025-02-10 18:47:57 +01:00
Joerg Hofrichter
3da007b679 mpm: discovery: demote log level of ECHO send error
The ECHO send error occurs if the sender tries a MTU size which
is greater than what is supported in the direction from the MPM
device back to the sender. This is uncritical as the sender will
try with a smaller MTU size afterwards. Hence, demote the log
level of this message to debug and add information about the
packet size to better understand what is happening.
2024-06-19 11:33:38 +02:00
Philipp Homann
159c21b75c mpm: Use receiving socket for sending response
The receiving socket can be used to send responses. This allows setting
firewall rules for USRP detection.
2022-03-02 13:06:23 -06:00
Lars Amsel
6e2a65e700 mpm: add device name to discovery process
MPM devices currently do not report their device name in the discovery
process. This adds the device name. After the change the device name
is reported, e.g. when using uhd_find_devices, like so:

    $> uhd_find_devices
    --------------------------------------------------
    -- UHD Device 0
    --------------------------------------------------
    Device Address:
        serial: DEADBEEF
        claimed: False
        fpga: X4_200
        mgmt_addr: <mpm device ip>
        name: <mpm device host name>
        product: x410
        type: x4xx
2022-02-08 13:55:35 -06:00
Martin Braun
ef94c93a08 mpmd: Increase UHD-side MTU cap for 10 GbE and 1 GbE
This gets closer to what our hardware can actually support. See the
comments for further explanations.

This has the side-effect of patching an issue on X410 (using 200 MHz
images) where garbage samples would get injected (one per packet). It
is not, however, the final fix for that problem.
2021-11-08 07:37:31 -08:00
Michael Dickens
1162f5e983 mpm: remove unnecessary imports 2021-05-20 14:57:47 -05:00
Michael Dickens
93bed45f48 mpm: add FPGA type to the info returned during discovery
Also update this info upon server reset, such as when a new FPGA image is loaded
2021-05-20 14:57:47 -05:00
Michael Dickens
97bd72438c mpm: remove unused argument info 2021-05-20 14:57:47 -05:00
Martin Braun
f9a8098cae mpm: Fix some Pylint warnings
No functional changes.
2018-03-06 15:45:15 -08:00
Martin Braun
ed2d1ac3e4 mpm: Demote some log messages
The log output at level 'INFO' was pretty cluttered. This cleans up the
log messages at the higher levels. In some cases, log message typos or
capitalizations were also fixed.
2018-03-06 15:28:33 -08:00
Martin Braun
e9288a439c mpm: Update all license headers
- Fix typo in company name (missing 'a')
- Updated SPDX license identifier to version 3.0
2018-02-19 16:55:08 -08:00
Martin Braun
0691c5ea75 mpm: Spawn periph manager inside the RPC process
Reviewed-by: Brent Stapleton <brent.stapleton@ettus.com>
2018-01-10 17:29:49 -08:00
Martin Braun
7c7d509017 mpm: Fix ECHO command
The echo server was using the wrong socket options, allowing responses
to be fragmented. Since we use the echo server for MTU discovery, that
would have beaten the purpose.

Also includes minor formatting fixes.
2017-12-22 15:05:59 -08:00
Martin Braun
8815098747 mpm: Harmonize all license header
Now uses SPDX headers everywhere.
2017-12-22 15:05:58 -08:00
Martin Braun
d3e6dd1140 mpm: Harmonize imports, tidy + sort modules
- Moved nijesdcore to cores/
- Moved udev, net, dtoverlay, uio to sys_utils/
- Made all imports non-relative (except in __init__.py files)
- Removed some unnecessary imports
- Reordered some imports for Python conventions
2017-12-22 15:05:58 -08:00
Martin Braun
3c385a4587 mpm: discovery can now be bound to subnet 2017-12-22 15:03:59 -08:00
Martin Braun
664f471baf mpm: Addition Py3k fixes, all related to string/UTF-8/ascii differences
- Also fixed some error handling in various cases
2017-12-22 15:03:58 -08:00
Martin Braun
2270a6b1a6 mpm: Fixed python import in discovery module 2017-12-22 15:03:53 -08:00
Martin Braun
285f14392b mpm: Moved over to new logging infrastructure
Also currently hardcodes some settings.
2017-12-22 15:03:45 -08:00
Andrej Rode
6a12add156 mpm: mpm reorganization 2017-12-22 15:03:45 -08:00
Andrej Rode
8ac9014d5c mpm: CMake cleanup, Python code enhancements
- Send user defined data in ping
- Improve rpc_shell, add mpm_debug.py, fix tracebacks in multiprocessing
2017-12-22 15:03:44 -08:00
Martin Braun
1a4348038d Initial commit for N3xx development.
- Creates mpm/ subdirectory
- First pass at hardware daemon/MPM
- New code for LMK04828, AD9371
- spidev integration

Contributions by:

Martin Braun <martin.braun@ettus.com>
Derek Kozel <derek.kozel@ettus.com>
Mark Meserve <mark.meserve@ni.com>
Andrej Rode <andrej.rode@ettus.com>
2017-12-22 15:03:44 -08:00