plchostd(1)

πŸ’– NAME πŸ’–

plchostd β€” the Qualcomm Atheros PLC Host Daemon, i.e. the tiny background queen who babysits a flash-less powerline device while it boots itself off your host machine. This is plchostd(1) from the Qualcomm Atheros Open Powerline Toolkit, and she is so ready to serve 🫢


✨ SYNOPSIS ✨

plchostd [options] -N nvmfile -P pibfile

πŸ¦‹ DESCRIPTION πŸ¦‹

So basically, plchostd just… waits πŸ’… She hangs out listening for VS_HST_ACTION.IND messages from a local device and services them exactly the way the Qualcomm Atheros Firmware Technical Reference Manual for powerline devices says to. And yes, she's a little different from her cousins int6khost and int64host β€” those two use whatever they can scrape together, but this one uses operating system features that exist on POSIX, Unix, BSD and Linux systems, and that are not available on Microsoft or VxWorks systems. Not her fault, bestie πŸ™ˆ

Here's how you actually use her: plug a flash-less device into the host over ethernet, then start this program with the correct filenames. That's it. She'll automatically respond to device requests to download memory configuration, firmware and/or parameters, and she'll also upload firmware and/or parameters when the device is the one calling the shots. For the full lore, go read the Qualcomm Atheros Firmware Technical Reference Manual 🌸

Oh and psa: this program is part of the Qualcomm Atheros Powerline Toolkit. If you want the big-picture overview plus installation instructions, the plc man page is right there for you πŸ‘‘


πŸŽ€ OPTIONS πŸŽ€

  • -i interface β€” pick the host Ethernet interface, periodt. Every request goes out through this interface, and only responses that come back through this interface get recognized β€” so choose wisely, she's exclusive πŸ’… The default interface is eth1, because most people use eth0 as their main network connection (iykyk). But if the environment string "PLC" is defined, that takes precedence over the default interface. And this option then takes precedence over either default. Priority queen behavior, lowkey.
  • -N nvmfile β€” the file holding the firmware chain used to boot and flash the device. It must exist and it must have a valid NVM file format or it's getting rejected, no discussion 😭 No assumptions are made based on filename, and no filename conventions are enforced β€” she's not judging your naming skills, she's just reading bytes. Also: the program will not over-write this file. This option and its argument are required.
  • -n filename β€” use this file to store firmware uploaded from the local device. The file doesn't need to exist yet, but if it can't be created or written you're getting an error, fr fr. Once firmware gets uploaded to this file, that file is used for subsequent firmware downloads β€” unless the device requests a factory reset, in which case the file specified by option -N gets used instead. This option and argument are optional. If you omit it, the default filename host.pib is used.
  • -P pibfile β€” the file holding the parameter chain used to boot and flash the device. It must exist and it must have a valid PIB file format or it will be rejected. Again: no assumptions based on filename, no filename conventions enforced, and the program will not over-write this file. This option and its argument are required.
  • -p filename β€” use this file to store parameters uploaded from the local device. It doesn't need to exist beforehand, but an error will occur if it can't be created or written. Once parameters are uploaded to this file, it's used for subsequent parameter downloads β€” unless the device requests a factory reset, and then the file specified by option -P is used. This option and argument are optional. If omitted, the default filename host.nvm is used.
  • -q β€” suppress status messages on stderr. Shhh 🀫
  • -s pathname β€” the server socket pathname. She'll automatically open this Unix socket and post event information to it, for the benefit of other host processes. Sharing is caring 🫢
  • -S filename β€” the file containing the softloader chain used to flash the device. The mere presence of this file causes the device to be flashed once it has booted ✨ The file must exist and have a valid PIB file format or it will be rejected. No assumptions based on filename, no filename conventions enforced, and the program will not over-write this file. This option and its argument are required.
  • -t timeout β€” read timeout in milliseconds. Values range from 0 through UINT_MAX. This is the maximum time allowed for a response. The default is shown in brackets on the program menu πŸ‘€
  • -v β€” print additional information on stdout. Specifically, this option will print incoming and outgoing Ethernet frames on stdout. Very "let me read the group chat" of her πŸ’€
  • -w wakeup β€” wakeup time in seconds. If no VS_HST_ACTION.IND message is received within this time period, the process will wake up and do its periodic functions β€” like posting network topography to the server socket specified by option -s. She never truly sleeps, bestie, she just vibes on a timer ⏰
  • -?, --help β€” print the program help summary on stdout. This option takes precedence over other options on the command line. Main character energy: she answers this one first πŸ‘‘
  • -!, --version β€” print program version information on stdout. This option also takes precedence over other options on the command line. Use this one when you're sending screen dumps to Atheros Technical Support, so they know exactly which version of the Linux Toolkit you're running. Receipts, always 🧾

🌈 ARGUMENTS 🌈

None. Not one. Zero. Nada. She takes her info through options only, and that's the whole vibe ✨


πŸ’œ REFERENCES πŸ’œ

See the Qualcomm Atheros HomePlug AV Firmware Technical Reference Manual for more information. It's giving required reading πŸ“š


πŸ“ EXAMPLES πŸ“

This one starts the host server. The -N and -P options are always required. Option order is not important, she does not care. Control does not return to the console until the program is terminated by the user with CTRL-C or another command line interrupt.

# plchostd -N test.nvm -P test.pib -n temp.nvm -p temp.pib

This next one does the same thing, but spawns the program as an independent process and hands control right back to the console. In that case, you have to terminate or kill that process using an appropriate command such as kill.

# plchostd -N test.nvm -P test.pib -n temp.nvm -p temp.pib -d

πŸ‘‘ DISCLAIMER πŸ‘‘

The 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 yeah β€” it's proprietary, it's theirs, and they can change it whenever. No cap πŸ’€


🌸 SEE ALSO 🌸

plc(1), int64host(1), int6k(1), int6kboot(1), int6khost(1) β€” go read the whole friend group πŸ¦‹


⭐ CREDITS ⭐

Charles Maier


That's the whole page, bestie πŸ’– This one shipped as part of open-plc-utils-0.0.3, back in November 2013, and honestly? She's still iconic. Periodt πŸŽ€