int6kid(1)

πŸ’– int6kid β€” Echo Device Key πŸ’–

okay bestie, welcome to int6kid(1) from the Qualcomm Atheros Open Powerline Toolkit. yes it's a mouthful. no we're not skipping anything. grab a strawberry drink πŸ“ and let's go.


✨ SYNOPSIS ✨

int6kid [options] [device] [device] [ ... ]

that's it. that's the whole vibe. options, then a bunch of devices if you're feeling extra.


🌸 DESCRIPTION 🌸

okay so here's the tea: this program prints one single powerline device key or HFID on stdout. literally one. that's the whole job and she does it flawlessly πŸ’…

the way that this is useful?? you can use it to dynamically define environment variables, or to insert command line arguments into scripts at runtime. main character energy for shell scripting, fr fr.

it's intended to echo a specific key read from a single device. but β€” plot twist β€” you can also use it to echo a specific key type read from several devices, by specifying either the Qualcomm Atheros Local Management Address or a broadcast address. so like, group chat, but for keys. 🫢

this program is, in some sense, the inverse of modpib β€” except it reads the key and HFID directly from the powerline device instead of reading from a PIB file. no middleman. iconic.

this program is part of the Qualcomm Atheros Powerline Toolkit. see the plc man page for an overview and installation instructions. (yes, go read it. iykyk.)


πŸŽ€ OPTIONS πŸŽ€

  • -A β€” prints the Ethernet address (MAC) for each specified device. heads up: this option and options -D, -M, -N, -S and -U are mutually exclusive. pick one, bestie, you can't have them all 😭
  • -D β€” prints the Device Access Key (DAK) for each specified device. and again: this option and options -A, -M, -N, -S and -U are mutually exclusive.
  • -e β€” redirects stderr messages to stdout. by convention, status and error messages go on stderr while the primary program output goes on stdout. this option prints all output on stdout in cases where that's what you want. one stream, one vibe ✨
  • -i interface β€” selects the host Ethernet interface. all requests are sent via this host interface, and only responses received via this host interface are recognized. the default interface is eth1 because most people use eth0 as their principle network connection; however, if environment string "PLC" is defined then it takes precedence over the default interface. and this option then takes precedence over either default. so it's a whole hierarchy: option > PLC > eth1. πŸ‘‘
  • -n β€” appends 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. no newline unless you ask, periodt.
  • -M β€” prints the Network Membership Key (NMK) for each specified device. mutual exclusivity alert: this option and options -A, -D, -N, -S and -U are mutually exclusive.
  • -N β€” prints the network HFID string for each specified device. and you guessed it: this option and options -A, -D, -M, -S and -U are mutually exclusive.
  • -q β€” suppresses status messages on stderr. quiet luxury πŸ’…
  • -S β€” prints the manufacturer HFID string for each specified device. once more with feeling: this option and options -A, -D, -M, -N and -U are mutually exclusive.
  • -v β€” print additional information on stdout. in particular, this option dumps incoming and outgoing packets, which can be saved as text files for reference. it's giving forensics πŸ”₯
  • -x β€” causes 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 -x is the "we're not doing this today" flag.
  • -?,--help β€” print program help summary on stdout. this option takes precedence over other options on the command line. queen behavior.
  • -?,--version β€” print program version information on stdout. 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. 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 valid and equivalent. yes bestie, all three. same address. the flexibility is chef's kiss 😌

the following MAC addresses are special and may be entered by name instead of number:

  • 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.
  • 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.

πŸ“– REFERENCES πŸ“–

see the Qualcomm Atheros HomePlug AV Firmware Technical Reference Manual for more information. (yes it's real, yes it's dense, yes it's worth it 🧚)


πŸ’€ 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. so like. don't @ them. πŸ™ˆ


⭐ EXAMPLES ⭐

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.

# int6kid
00:11:22:33:44:55:66:77:88:99:AA:DD:CC:DD:EE:FF

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

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. (spoiler: it's the subshell. it's always the subshell.)

# modpib abc.pib -D $(int6kid -Di eth2 00:B0:52:DA:DA:57) -N $(int6kid -Mi eth2 00:B0:52:DA:DA:57)

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. compact queen πŸ‘‘

# PLC=00:B0:52:DA:DA:57
# DAK=$(int6kid -Dieth2 ${PLC})
# NMK=$(int6kid -Mieth2 ${PLC})
# modpib abc.pib -D ${DAK} -N ${NMK}

πŸ”₯ SEE ALSO πŸ”₯

plc(1), int6k(1), int6kf(1), int6kp(1), modpib(1)

go read them. they're all part of the family.


πŸ‘‘ CREDITS πŸ‘‘

Charles Maier


and that's the whole page, bestie. every flag, every address, every caveat β€” nothing skipped, nothing invented. ate and left no crumbs πŸŽ€

this was open-plc-utils-0.0.3, dated November 2013 β€” yes she's an elder but she still slays. mwah πŸ’–