LinuxCNC(1)
π NAME π
elbpcom β the lil' tool that lets you talk to Mesa ethernet cards, bestie. Fr fr. π¦
This is LinuxCNC(1) territory, so pull up a chair and let's get into it. β¨
πΈ SYNOPSIS πΈ
Okay so here's the vibe. There's a bunch of common options that basically every invocation can carry, and then the actual modes on top of that.
Common options β the little starter pack:
elbpcom [--ip=IP] [--port=PORT] [--timeout=TIMEOUT]
[--space=MEMSPACE] [--size=TRANSFER_SIZE]
Reading data π β you're here to get info:
elbpcom [common options] [--info] --address=ADDRESS --read=LENGTH
Writing data βοΈ β you're here to send info:
elbpcom [common options] --address=ADDRESS --write=HEXDATA
Read and decode the memory space info area π:
elbpcom [--space=MEMSPACE] --read-info
Sending arbitrary packets π² β chaos mode, we love her:
elbpcom [common options] HEXDATA
π DESCRIPTION π
So basically elbpcom reads or writes data from a Mesa ethernet card that speaks the LBP16 protocol β think like the 7I80 and her friends. It's giving low-level task energy, and honestly? That's exactly the point. π
If you wanna know what each address space actually means, go read the card documentation, bestie, because I'm not gonna guess for you. π
β οΈ Real talk though: using this utility wrong can have negative effects. Like, actually. You could end up changing the board's IP address, or even corrupting the FPGA bitfile in the eeprom. That's not a cute surprise, that's a bad time. π
And for some jobs β specifically updating FPGA bitfiles and setting IP addresses β mesaflash(1) is the more appropriate tool. Use the right girl for the right job, periodt. π
β¨ The Defaults β¨
If you don't specify them, here's what you get:
--ip=192.168.1.121 --port=27181 --timeout=.2 --space=0 --size=0
And a lil detail that matters: if the --size argument TRANSFER_SIZE is 0, then elbpcom goes and looks up the preferred transfer size of the space, in that space's info area. She checks first. Iconic behaviour honestly. π§
π« The Example (iykyk) π«
This one shows you how to read the HOSTMOT2 identifying string from the IDROM in space 0:
$ elbpcom --address 0x104 --read 8
> 82420401
< 484f53544d4f5432
HOSTMOT2
Okay so let's decode the format, because it's genuinely so satisfying:
- First, the request is shown in hex. That's the
>line. π€ - Then the response (if there is one) is shown in hex. That's the
<line. π₯ - Finally, the response is shown in ASCII β and any non-ASCII characters get replaced with
.. So clean. β¨
And apparently this is similar to these mesaflash invocations:
$ ./mesaflash --device 7i80 --rpo 0x104
54534F48
$ ./mesaflash --device 7i80 --rpo 0x108
32544F4D
β¦but β and this is the important part, don't skip it β notice its different treatment of byte order. π That's the whole tea. They are not the same and you need to know that.
π¦ SEE ALSO π¦
mesaflash(1)hostmot2(9)hm2_eth(9)- Mesa's documentation for the Anything I/O boards
Okay bestie, that's the whole page, we ate and left no crumbs. π
This one comes from the LinuxCNC Documentation, dated 2015-04-18, and it lives in the LinuxCNC(1) section. Mwah. π
π
π¦ where this page comes from
- debian trixie: linuxcnc-uspace 1:2.9.4-2+deb13u1 Β· GFDL-1.1-or-later
- ubuntu questing: linuxcnc-uspace 1:2.9.4-2ubuntu2
- ubuntu resolute: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- ubuntu stonking: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- Copyright (C) 2015 Jeff Epler
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms