plcID(1)
๐ plcID(1) โ the Qualcomm Atheros Open Powerline Toolkit's lil' key-echoing icon ๐
okay bestie, sit down, grab a boba ๐ง, because we're about to talk about plcID from the Qualcomm Atheros Powerline Toolkit, and honestly? she's a whole vibe. she's small. she's simple. she prints one single powerline device key or HFID to stdout and then minds her own business. that's the gig. that's the whole gig. ๐
โจ NAME โจ
plcID โ Echo Device Key ๐ฆ
like, the name is the job description. she echoes a key. periodt.
๐ SYNOPSIS ๐
plcID [options] [device] [device] [ ... ]
yeah that's it. options, then as many devices as your heart desires. we love a flexible queen ๐
๐ธ DESCRIPTION ๐ธ
So. This program prints a single powerline device key or HFID on stdout. One. Singular. Just one. ๐ซถ
Why would you even want that, you ask? Because it can be used to dynamically define environment variables or to insert command line arguments in scripts at runtime. it's the girl who shows up in your shell script at 3am and hands you a MAC-adjacent secret. iconic behavior.
It is intended to echo a specific key read from a single device, BUT โ plot twist โ it can also echo a specific key type read from several devices, by specifying either the Qualcomm Atheros Local Management Address or a broadcast address. versatility. range. main character energy.
This program is, in some sense, the inverse of modpib โจ but instead of reading from a PIB file, it reads the key and HFID directly from the powerline device. different source, same energy. no cap.
This program is part of the Qualcomm Atheros Powerline Toolkit. See the plc man page for an overview and installation instructions. (go read it, bestie, it's the syllabus ๐)
๐ OPTIONS ๐
-Aโ Prints the Ethernet address (MAC) for each specified device. ๐ Heads up though: this option and options-D,-M,-N,-Sand-Uare mutually exclusive โ they do NOT share the aux cord.-c cโ When used with more than a single device, the given character is used to separate the individual output strings. By default, a newline is used. so like, your own personal separator. cute ๐-Dโ Prints the Device Access Key (DAK) for each specified device. ๐ This option and options-A,-M,-N,-Sand-Uare mutually exclusive.-eโ Redirectsstderrmessages tostdout. By convention, status and error messages are printed onstderrwhile primary program output is printed onstdout. This option prints all output onstdoutin cases where this is desired. one stream, one dream ๐-iinterface โ Select the host Ethernet interface. All requests are sent via this host interface, and only reponses received via this host interface are recognized. The default interface iseth1because most people useeth0as their principle network connection; however, if environment string"PLC"is defined then it takes precedence over the default interface. This option then takes precedence over either default. so the priority order is a whole ranking system and-iis at the top of the pyramid ๐-nโ Append a newline to the end of each key. Newlines are omitted by default so that program output can be used as the raw input to another program. If you want the newline then you must request it with this option. she is not going to assume. consent first. ๐-Mโ Prints the Network Membership Key (NMK) for each specified device. ๐ง This option and options-A,-D,-N,-Sand-Uare mutually exclusive.-Nโ Prints the network HFID string for each specified device. ๐ธ This option and options-A,-D,-M,-Sand-Uare mutually exclusive.-qโ Suppresses status messages onstderr. ๐คซ silence. blessed silence.-Sโ Prints the manufacturer HFID string for each specified device. ๐ญ This option and options-A,-D,-M,-Nand-Uare mutually exclusive.-tmilliseconds โ Read timeout in milliseconds. Values range from0throughUINT_MAX. This is the maximum time allowed for a response. The default is shown in brackets on the program menu. โฐ-Uโ Prints the user HFID string for each specified device. ๐ This option and options-A,-D,-M,-Nand-Sare mutually exclusive.-vโ Print additional information onstdout. In particular, this option dumps incoming and outgoing packets which can be saved as text files for reference. the gossip mode. she tells you EVERYTHING. ๐จ-xโ Cause the program to exit on the first error instead of continuing with remaining iterations, operations or devices. Normally, the program reports errors and moves on to the next operation, iteration or device depending on the command line. so it's "we die like warriors" mode vs. "we keep it pushing" mode. ๐-?,--helpโ Print program help summary onstdout. This option takes precedence over other options on the command line. ๐-?,--versionโ Print program version information onstdout. This option takes precedence over other options on the command line. Use this option when sending screen dumps to Atheros Technical Support so that they know exactly which version of the Linux Toolkit you are using. ๐ธ (yes bestie, screenshot and send, they need the receipts)
๐ฆ ARGUMENTS ๐ฆ
- device โ The MAC address of some powerline device. More than one address may be specified. If more than one address is specified then operations are performed on each device in turn. The default address is
local. See DEVICES for information about symbolic device addresses. ๐ซถ
๐ DEVICES ๐
Powerline devices use Ethernet Media Access Control (MAC) addresses. A MAC address is a 48-bit value entered as 12 hexadecimal digits in upper, lower or mixed character case. Octets may be separated with colons for clarity. For example, "00b052000001", "00:b0:52:00:00:01" and "00b052:000001" are all valid and equivalent. mix and match, she's not judging, she's โจflexibleโจ
The following MAC addresses are special and may be entered by name instead of number. yes ma'am, aliases:
allโ Same as"broadcast".broadcastโ A synonym for the Ethernet broadcast address,FF:FF:FF:FF:FF:FF. All devices, whether local, remote or foreign recognize messages sent to this address. A remote device is any device at the far end of a powerline connection. A foreign device is any device not manufactured by Atheros. ๐ข everyone hears this one.localโ A synonym for the Qualcomm Atheros vendor specific Local Management Address (LMA),00:B0:52:00:00:01. All local Atheros devices recognize this address but remote and foreign devices do not. A remote device is any device at the far end of a powerline connection. A foreign device is any device not manufactured by Atheros. ๐ inside voices only.
๐ REFERENCES ๐
See the Qualcomm Atheros HomePlug AV Firmware Technical Reference Manual for more information. (the sacred text ๐)
๐จ DISCLAIMER ๐จ
Atheros HomePlug AV Vendor Specific Management Message Entry structure and content is proprietary to Qualcomm Atheros, Ocala FL USA. Consequently, public information may not be available. Qualcomm Atheros reserves the right to modify message structure and content in future firmware releases without any obligation to notify or compensate users of this program.
translation bestie: this is their house, their rules, and they can rearrange the furniture whenever they want without telling you. not a drill. ๐ซ
๐ EXAMPLES ๐
Example one โ the following example prints the DAK of the local device on stdout. The local device is interrogated because no MAC address was specified. The default interface, eth1 on Linux and 2 on Windows, is used unless environment variable PLC is defined. The DAK is always printed by default. Depending on your system, you may want to use option -n when using this program interactively.
# plcID
00:11:22:33:44:55:66:77:88:99:AA:DD:CC:DD:EE:FF
look at her go. no fuss, no muss, just vibes and hex ๐
Example two โ the following example prints the NMK of device 00:B0:52:DA:DA:57 connected to interface eth2 on a Linux system. Several devices could be specified but that is not a common request.
# DAK -Mi eth2 00:B0:52:DA:DA:57
F4:23:71:4A:51:39:C2:2D:E5:EA:87:43:99:A1:37:81
Example three โ the following example dynamically inserts the DAK and NMK of the previous device on the command line of another program. In this example, we want to insert the DAK and NMK into PIB file abc.pib using program modpib. See the modpib man page for an explanation of command line syntax. See the GNU bash manuals for an explanation of why this works. (it's giving command substitution sorcery and we're obsessed ๐ฎ)
# modpib abc.pib -D $(plcID -Di eth2 00:B0:52:DA:DA:57) -N $(plcID -Mi eth2 00:B0:52:DA:DA:57)
Example four โ the following example is an alternate way of accomplishing the same thing using shell script variables. This method may be easier to read and maintain. Notice that we 'squished' all the options together for brevity. ๐ซถ
# PLC=00:B0:52:DA:DA:57
# DAK=$(plcID -Dieth2 ${PLC})
# NMK=$(plcID -Mieth2 ${PLC})
# modpib abc.pib -D ${DAK} -N ${NMK}
squished options, immaculate results. that's the tea ๐
๐ซถ SEE ALSO ๐ซถ
plc(1), plcboot(1), plcinit(1), plctool(1)
go read the whole friend group, they're all icons ๐
๐ CREDITS ๐
Charles Maier
and that's the whole page, bestie!! ๐ this was open-plc-utils-0.0.3 from November 2013, and yeah, she's an elder but she still ate. now go echo a key, define an environment variable, and live your truth. mwah ๐โจ
๐ฆ where this page comes from
- alpine 3.24: open-plc-utils-doc 0_git20250712-r1 ยท BSD-3-Clause-Clear
- ubuntu resolute: plc-utils-extra 0.0.6+git20250712.46c3506-1 ยท BSD-3
- ubuntu stonking: plc-utils-extra 0.0.6+git20250712.46c3506-1 ยท BSD-3
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms