int6kboot(1)

πŸ’– int6kboot β€” Qualcomm Atheros Powerline Device Boot Utility I πŸ’–

okay so bestie, welcome to int6kboot from the Qualcomm Atheros Open Powerline Toolkit ✨ this is the girl who wakes up powerline devices that are stuck in bootloader mode and gets them literally running firmware. she's iconic. let's go πŸ’…


🌸 SYNOPSIS 🌸

int6kboot [options] -N file -P file [device] [device] [...]

✨ DESCRIPTION ✨

so the whole vibe here is: you download runtime firmware onto any local Atheros powerline device that's sitting in bootloader mode, and then you start it. a device ends up stuck in bootloader mode when it can't load firmware out of flash memory for some reason β€” could be there's no flash memory at all, could be the flash is blank, could be it's corrupted. either way, this program can start a device, or start then flash a device. both? both. 🫢

the bootloader only recognizes a subset of Atheros message types, so this program uses exactly that subset to write runtime firmware and parameters into SDRAM, then starts firmware execution at a known address. optionally β€” and this is the fun part β€” it can then go ahead and download that same firmware and those same parameters again, and tell the runtime firmware to write them into flash memory. no cap.

Starting a device is a three phase operation, and it can only happen while the bootloader is running:

  1. phase one writes an SDRAM configuration program into TCM and executes it.
  2. phase two writes runtime firmware and parameters as images into SDRAM.
  3. phase three starts firmware execution.

once the runtime firmware starts, the device is operational. main character energy, fr fr. πŸ‘‘

Flashing a device is a two phase operation, and it can only happen while the firmware is running:

  1. phase one downloads runtime firmware and parameters into scratch buffers under firmware control.
  2. phase two instructs the firmware to write the scratch buffers to flash memory and restart the device.

after flashing, the device is self-sustaining. she's independent now. 😭

okay so here's the tea: the device address is 00:B0:52:00:00:01 on boot, which means the host has to send all messages to that address. this can cause problems if multiple devices are connected to the host and all in Bootloader mode β€” they'll have the same firmware and MAC address because their PIBs will be identical. one should avoid this situation. πŸ’€

it's probably alright to have other devices connected to the host that are running firmware, because they'll still see but not recognize the messages used in this operation. if only one device is connected to the host, then it's safe to flash the device using address 00:B0:52:00:00:01. otherwise, the host should address messages to the actual device address so that other devices don't try to write to their own flash memory at the same time. sharing is not caring here bestie πŸ™ˆ

this program is part of the Qualcomm Atheros Powerline Toolkit. see the plc man page for an overview and installation instructions. iykyk ✨


πŸ’… OPTIONS πŸ’…

  • -e β€” redirects stderr messages to stdout. by convention, status and error messages go on stderr while primary program output goes on stdout; this option prints all output on stdout in cases where that's what you want. one stream, no drama πŸŽ€
  • -F[F] β€” write previously downloaded MAC and PIB to NVRAM using VS_MOD_NVM. adding a second F here, or another -F anywhere on the command line, will force-flash a blank or corrupted NVRAM. firmware loaded from NVRAM will treat force-flash as an error. this option can be used to create factory settings, but it cannot be used to change them once they've been created. subsequent use creates and updates operational settings that can be erased using a factory reset. okay queen, know your limits πŸ’…
  • -i interface β€” select 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 the environment string PLC is defined then it takes precedence over the default interface. this option then takes precedence over either default. so the hierarchy is: -i > PLC > eth1. slay 🌈
  • -N filename β€” read the named NVM file and write it to the device. this option and argument are required. any file having an invalid NVM file format will be rejected. no assumptions are made based on filename and no filename conventions are enforced. she does not judge your naming choices πŸ’–
  • -P filename β€” read the named PIB file and write it to the device. this option and argument are required. any file having an invalid PIB file format will be rejected. no assumptions are made based on filename and no filename conventions are enforced. same energy πŸ¦‹
  • -q β€” suppresses status messages on stderr. quiet girl era 🀫
  • -t milliseconds β€” 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 β€” prints additional information on stdout. in particular, this option dumps outgoing Ethernet packets on stdout. not me being nosy about every packet πŸ‘€
  • -?, --help β€” print program help summary on stdout. this option takes precedence over other options on the command line. πŸ‘‘
  • -!, --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. receipts matter, bestie 🧾✨

πŸŽ€ ARGUMENTS πŸŽ€

  • device β€” the Ethernet hardware address of some powerline device. more than one address may be specified on the command line. if more than one address is specified then operations are performed on each device in turn. the default address is local, as explained in the DEVICES section. one at a time, we're not chaotic (we are a little chaotic) πŸ’œ

πŸ¦‹ DEVICES πŸ¦‹

powerline device addresses are 12 hexadecimal digits in upper, lower or mixed case. individual octets may be separated by colons, for clarity, but colons are not required. for example, "00b052000001", "00:b0:52:00:00:01" and "00b052:000001" are all valid and equivalent. cute, flexible, valid 🌸

  • a local device is any Atheros Powerline Device connected directly to a host Ethernet interface.
  • a remote device is any Atheros Powerline Device at the far end of a powerline connection.
  • a foreign device is any powerline device not manufactured by Atheros.

common device addresses have symbolic names that can be used in place of the actual address value. the following symbolic addresses are recognized by this program and most other toolkit programs:

  • all β€” equivalent to "broadcast", described next.
  • broadcast β€” a synonym for the Ethernet broadcast address, FF:FF:FF:FF:FF:FF. all devices, whether local, remote or foreign, will respond to this address.
  • local β€” a synonym for the Qualcomm Atheros Local Management Address (LMA), 00:B0:52:00:00:01. all local Atheros devices will respond to this address but remote and foreign devices will not.

πŸ“š REFERENCES πŸ“š

see the Qualcomm Atheros HomePlug AV Firmware Technical Reference Manual for technical information. see the Qualcomm Atheros Powerline Toolkit Online Documentation for practical information and examples. homework but make it glam ✨


πŸ”₯ EXAMPLES πŸ”₯

the -N and -P options are always required. their order is not important. the MAC address is not needed because devices default to address 00:B0:52:00:00:01 (the program default address) in bootloader mode. once this operation completes, firmware is running in SDRAM but the NVRAM, if present, has not been programmed. this operation is common for flash-less devices. if we reset the device at this point then the device will return to bootloader mode. no NVRAM, no permanence, no problem 🫢

int6kboot -N test.nvm -P test.pib
# eth0 00:B0:52:00:00:01 Write SDRAM Configuration
# eth0 00:B0:52:00:00:01 Written.
# eth0 00:B0:52:00:00:01 Write to device memory
# eth0 00:B0:52:00:00:01 Written.
# eth0 00:B0:52:00:00:01 Write to device memory
# eth0 00:B0:52:00:00:01 Written.
# eth0 00:B0:52:00:00:01 Start Firmware
# eth0 00:B0:52:00:00:01 Started.

the next example does the same thing but performs the extra steps needed to program NVRAM. it first downloads the firmware image from file test.nvm and the parameter block image from file test.pib using VS_WR_MEM, then starts firmware execution using VS_ST_MAC. once runtime firmware has started, it downloads the same firmware image and parameter block image (again) using VS_WR_MOD and commits them to NVRAM using VS_MOD_NVM. look at her go, two rounds, zero complaints πŸ’…

int6kboot -N test.nvm -P test.pib -F
# eth0 00:B0:52:00:00:01 Write SDRAM Configuration
# eth0 00:B0:52:00:00:01 Written.
# eth0 00:B0:52:00:00:01 Write to device memory
# eth0 00:B0:52:00:00:01 Written.
# eth0 00:B0:52:00:00:01 Write to device memory
# eth0 00:B0:52:00:00:01 Written.
# eth0 00:B0:52:00:00:01 Start Firmware
# eth0 00:B0:52:00:00:01 Started.
# eth0 00:B0:52:00:00:01 Write MAC as module
# eth0 00:B0:52:00:00:01 Written.
# eth0 00:B0:52:00:00:01 Write PIB as module
# eth0 00:B0:52:00:00:01 Written.
# eth0 00:B0:52:00:00:01 Flash Device
# eth0 00:B0:52:00:00:01 Flashed.

πŸ’€ 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 be surprised, bestie 😭


🌈 SEE ALSO 🌈

plc(1), ampboot(1), chknvm(1), chkpib(1), int6k(1), modpib(1)


πŸ‘‘ CREDITS πŸ‘‘

Charles Maier


and that's the whole page, periodt πŸ’– this cutie is from open-plc-utils-0.0.3 and she was written down in November 2013 β€” vintage, but still serving πŸŒΈπŸ¦‹πŸŽ€