plcset(1)
π plcset(1) β Qualcomm Atheros Open Powerline Toolkit π
okay bestie, gather round, because this is the one where we write stuff to your powerline devices. it's plcset from the Qualcomm Atheros Open Powerline Toolkit, and she is giving main character energy fr fr.
β¨ NAME β¨
plcset β Qualcomm Atheros PLC Set Property
πΈ SYNOPSIS πΈ
plcset [options] [type data] [type data] [device] [device] [...]
π DESCRIPTION π
So here's the vibe: plcset sets a specific property value on a Qualcomm Atheros powerline device, and it does it using the VS_SET_PROPERTY message. periodt.
Properties get specified by their numeric property identifier. that's it. no names, no nicknames, no pet names β property names are not supported, sorry bestie. π
Property values come in as type and data pairs. if you've ever used setpib, you already know this whole enter-your-data thing β same energy, you're gonna be fine.
Only selected properties can actually be set with this message type, so don't come at me when your fave one isn't on the list. π Go check the Qualcomm Atheros Firmware Technical Reference Manual for the supported property identifiers, versions, values and data formats. iykyk.
And yes, this program is part of the Qualcomm Atheros Powerline Toolkit. that's the family. π«Ά
β¨ OPTIONS β¨
-eβ Redirects stderr messages to stdout. by convention, status and error messages go to stderr while primary program output goes to stdout β but if you want everything on stdout, this is your girl. all output, one stream, no drama. π-n numberβ The property identifier or property version. these get entered as 32-bit decimal integers. property names? not supported, we been knew. the default is0. this option can show up more than once on the command line: the first occurrence specifies the property identifier, and the second occurrence specifies the property version. go read the Firmware Technical Reference Manual for the list of valid property identifiers and versions. π-i interfaceβ Select the host Ethernet interface. all requests go out via this interface, and only responses that come back via this interface get recognized. no sneaky side-channel replies, okay? the default interface iseth1, because most people useeth0as their principle network connection. BUT β if the environment stringPLCis defined, it takes precedence over that default interface. and then this option takes precedence over either default. hierarchy, slay. π-o optionβ The update option (or method), expressed as an 8-bit hexadecimal integer. the0xprefix is optional. you build option values from the logical OR of0x01=ApplyNow,0x02=Persistand0x04=Reset. the only legal option values are0x01,0x02,0x03and0x06. anything else? not legal, bestie, don't do it. π«-qβ Suppresses status messages on stderr. quiet mode, shhh. π-vβ Prints additional information on stdout. specifically, this one dumps outgoing Ethernet packets on stdout. if you love watching packets fly by, this is your moment. π₯-?,--helpβ Displays program help information on stderr. this option takes precedence over all other options on the command line, except version information. π-!,--versionβ Displays program version information on stderr. this takes precedence over all other options on the command line except help information. use this one when you're sending screen dumps to Atheros technical staff. πΈ
π ARGUMENTS π
deviceβ The MAC address of some powerline device. you can specify more than one address, and if you do, operations are performed on each device in turn. the default address islocal. see DEVICES for info about symbolic device addresses. π¦
π FORMATS π
okay this is the part where it gets fun. each property gets assigned one or more values, and each value can have a different type and size. the expected type, size and order of property values is described in the Firmware Technical Reference Manual, under the VS_SET_PROPERTY message description. expected data types and values must be entered on the command line in the order specified in the manual, and they must appear before any device addresses appear. order matters, bestie. π
byte integerβ An unsigned integer stored as 8 bits or 1 byte. the value is expressed in decimal by default. a binary value may be expressed with a0bprefix. a hexadecimal value may be expressed using a0xprefix. the offset increments by 1 prior to the next insertion. βword integerβ An unsigned integer stored as 16 bits or 2 bytes. value is decimal by default, binary with a0bprefix, hex with a0xprefix. the result gets sent in little endian byte order. the offset increments by 2 prior to the next insertion. β¨long integerβ An unsigned integer stored as 32 bits or 4 bytes. decimal by default,0bfor binary,0xfor hex. the result gets sent in little endian byte order. the offset increments by 4 prior to the next insertions. πhuge integerβ An unsigned integer stored as 64 bits or 8 bytes. decimal by default,0bfor binary,0xfor hex. the offset increments by 8 prior to the next insertion, and the result gets sent in little endian byte order. heads up though β this type is only available on hosts that support 64 bit data values. πdata hexβ A sequence of hexadecimal octets. octets may be separated by a colon for clarity. the number of octets determines the number of bytes written. the result is sent in the byte order specified on the command line. the offset increments by the number of bytes written. this is similar tokeyandmacbelow, but it accepts variable length input. πΈkey hexβ A sequence of hexadecimal octets. octets may be separated by a colon for clarity. the number of octets must convert to 16 bytes, or an error will occur. the result is sent in the byte order specified on the command line. the offset increments by 16 prior to the next insertion. this is similar todataabove but accepts only fixed length input. this one may be used to set the DAK, NMK or NVAK values. πmac hexβ A sequence of hexadecimal octets. octets may be separated by a colon for clarity. the number of octets must convert to 6 bytes, or an error will occur. the result is sent in the byte order specified on the command line. the offset increments by 6 prior to the next insertion. this is similar todataabove but accepts only fixed length input. this one may be used to set the DAK, NMK or NVAK values too. πhfid stringβ An ASCII character string. the string is always stored as 64 bytes. short strings are padded on the right with NUL characters. long strings are truncated on the right and the last byte is forced to NUL. the offset increments by 64 prior to the next insertion. this one may be used to enter user, network and manufacturer identification strings. π§zero countβ An unsigned integer representing the number of consecutive bytes to fill with0x00. the offset increments by the number of bytes written. this may be used to erase regions of the PIB. π«§fill countβ An unsigned integer representing the number of consecutive bytes to fill with0xFF. the offset increments by the number of bytes written. this may also be used to erase regions of the PIB. π₯skip countβ An unsigned integer indicating the number of bytes to skip over before starting another change. intervening data locations are unchanged. we're just hopping over them, no touchy. π
π TR69 DATA TYPES π
β οΈ bestie listen. these data types are not currently recognized by the runtime firmware, and so errors will certainly result if they are used. i'm not kidding, don't come crying to me. π
accesspassword stringβ An ASCII character string. the string is always stored as 257 bytes. short strings are padded on the right with NUL characters. long strings are truncated on the right and the last byte is forced to NUL. the offset increments by 257 prior to the next insertion. πaccessusername stringβ An ASCII character string. always stored as 33 bytes. short strings padded on the right with NUL characters, long strings truncated on the right with the last byte forced to NUL. the offset increments by 33 prior to the next insertion. π€adminpassword stringβ An ASCII character string. always stored as 33 bytes. short strings padded on the right with NUL characters, long strings truncated on the right with the last byte forced to NUL. the offset increments by 33 prior to the next insertion. πadminusername stringβ An ASCII character string. always stored as 33 bytes. short strings padded on the right with NUL characters, long strings truncated on the right with the last byte forced to NUL. the offset increments by 33 prior to the next insertion. π«password stringβ An ASCII character string. always stored as 257 bytes. short strings padded on the right with NUL characters, long strings truncated on the right with the last byte forced to NUL. the offset increments by 257 prior to the next insertion. πurl stringβ An ASCII character string. always stored as 257 bytes. short strings padded on the right with NUL characters, long strings truncated on the right with the last byte forced to NUL. the offset increments by 257 prior to the next insertion. πusername stringβ An ASCII character string. always stored as 257 bytes. short strings padded on the right with NUL characters, long strings truncated on the right with the last byte forced to NUL. the offset increments by 257 prior to the next insertion. π¦
part 1 done, bestie β more coming, don't go anywhere π
π DEVICES π
Okay bestie, this is the part where the devices get names. Powerline devices flex their Ethernet Media Access Control (MAC) addresses, and a MAC address is a 48-bit value that you type in as 12 hexadecimal digits β upper, lower, or mixed case, she does not care. π
You may separate the octets with colons for clarity if that's your vibe. For example, all three of these are valid and totally equivalent:
"00b052000001""00:b0:52:00:00:01""00b052:000001"
And now the special girlies β the following MAC addresses are special and you can enter them by name instead of number. π
allβ same as"broadcast". Simple as that.broadcastβ a synonym for the Ethernet broadcast address,FF:FF:FF:FF:FF:FF. Literally every device β local, remote or foreign β recognizes messages sent to this address. Quick definitions so you're not lost: a remote device is any device at the far end of a powerline connection, and 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. And again for the people in the back: a remote device is any device at the far end of a powerline connection, and a foreign device is any device not manufactured by Atheros. π
π REFERENCES π
See the Qualcomm Atheros HomePlug AV Firmware Technical Reference Manual for the latest tea on available properties. It's giving "required reading", bestie. πβ¨
π DISCLAIMER π
Atheros HomePlug AV Vendor Specific Management Message 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 come for them, fr fr. π
β¨ EXAMPLES β¨
Example numero uno π
This one sets the "time-to-live" property for each channel access priority type: CAP0, CAP1, CAP2, CAP3 and MME. The property identifier is 101. It needs five 32-bit decimal integer values in microseconds. Data type long specifies a 32-bit decimal value that will be converted to little endian format on output. Not me explaining endianness at 2amβ¦ π₯
# plcset -n 101 long 100 long 200 long 250 long 300 long 100
Example numero dos π¦
The next example sets the User HFID. The first occurrence of option -n specifies the property by number as 105. The second occurrence specifies the property version as 1. This is merely an example of how to specify the property version β at the time of writing, property 105 is still version 0. π
# plcset -n 105 -n 1 hfid "Intergalactic Software Pirates"
Not the software pirates living rent free in the manpage π iconic.
π SEE ALSO π
π CREDITS π
Charles Maier β we stan a legend. π
And that's the whole page, bestie! π«Ά This one ships with open-plc-utils-0.0.3 from November 2013, and yes it's still the plcset(1) page you know and love. Go forth and set those properties. Slay. π
β¨
π¦ where this page comes from
- alpine 3.24: open-plc-utils-doc 0_git20250712-r1 Β· BSD-3-Clause-Clear
- debian bookworm: plc-utils-extra 0.0.6+git20230504.1ba7d5a0-1 Β· BSD-3
- debian trixie: plc-utils-extra 0.0.6+git20250517.7fb8ac5-1 Β· BSD-3
- ubuntu noble: plc-utils-extra 0.0.6+git20230504.1ba7d5a0-1 Β· BSD-3
- ubuntu questing: plc-utils-extra 0.0.6+git20250517.7fb8ac5-1
- 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