chknvm(1)

πŸ’– chknvm β€” Qualcomm Atheros PLC Image File Validator πŸ’–

okay bestie, welcome to chknvm(1) from the Qualcomm Atheros Open Powerline Toolkit, section 1 of the manual. she's a validator, she's thorough, and she's about to read your firmware files so you don't have to ✨


🌸 SYNOPSIS 🌸

chknvm [options] file [file] [...]

πŸ¦‹ DESCRIPTION πŸ¦‹

So basically? chknvm validates the image chain sitting inside a Qualcomm Atheros PLC firmware file or parameter file. She checks the file structure, the file size, the image header sizes and checksums, and the image sizes and checksums. And if you want, she'll also display internal image header information, or info pulled out of selected image types when those happen to be there.

Use her to detect corrupted firmware or parameter files, or to peek inside image files and figure out what's in them. fr fr that's the whole vibe.

She handles both the older Thunderbolt and Lightning formats and the newer Panther and Lynx firmware file formats. And because she validates files directly from disk, she's slower than chknvm2 β€” but the tradeoff is she needs less memory at runtime. lowkey a fair trade, ngl.

This program is part of the Qualcomm Atheros Powerline Toolkit. See the AMP man page for an overview and installation instructions. πŸ‘‘


πŸ’… OPTIONS πŸ’…

  • -i β€” Print the revision string identity fields in fixed-width columns. Genuinely useful when you're digging through .nvm folders hunting for one specific build. it's giving organized.
  • -m β€” Display manifest content, if present. The manifest is a special module that's included in some image chains and it holds useful information about the chain. Heads up: this option suppresses the summary looks good message.
  • -r β€” Print the firmware revision string on stdout. This one also suppresses the summary looks good message.
  • -s β€” Print the SDRAM configuration block on stdout. This option automatically suppresses the summary looks good message. no take-backs.
  • -q β€” Suppresses printing of routine messages. Specifically, it suppresses the summary looks good message. quiet queen behavior.
  • -v β€” Print additional information, like the image header for each image processed. This info can help you tell one firmware file from another β€” if you know what to look for πŸ‘€
  • -?, --help β€” Print the program help summary on stdout. This option takes precedence over the other options on the command line. she said me first.
  • -!, --version β€” Print program version information on stdout. This option also takes precedence over other options on the command line. Use it when you're sending screen dumps to Atheros Technical Support so they know exactly which version of the Linux Toolkit you're on. receipts, always 🧾

πŸŽ€ ARGUMENTS πŸŽ€

  • file β€” The name of an Atheros image file. By convention, Atheros Image files have a .nvm file extension, but this program does not enforce that convention. she's not gonna gatekeep your filenames 🫢

⚠️ DISCLAIMER ⚠️

Qualcomm Atheros firmware file structure and content is proprietary to Qualcomm Atheros, Ocala FL USA. Consequently, public information is not available. And listen β€” Qualcomm Atheros reserves the right to change firmware file structure or content, or to change the name or behavior of any program that inspects or changes firmware files, in future software releases, without any obligation to notify or compensate users of such programs. so yeah, that's a thing. no cap.


🌈 EXAMPLES 🌈

This first one reads abc.nvm and validates it. The message shown means the file is the correct length, the image headers and images have the correct length and checksum, and there were no read errors. The file can have either the newer or the older format. πŸ’–

# chknvm abc.nvm
abc.nvm looks good

Next up: reading three files in succession and reporting on each one. And yes, you can suppress the good news with the -q option if you're feeling shy.

# chknvm INT6400.nvm AR7400.nvm AR7420.nvm
INT6400.nvm looks good
AR7400.nvm looks good
AR7420.nvm looks good

This next one displays the SDRAM parameter block found in the named files. SDRAM parameter blocks are a legacy feature β€” they used to configure memory. Powerline devices now run a configuration applet instead. Observe that file AR6400.nvm is the only one that contains SDRAM parameters. it's giving vintage πŸ•°οΈ

# chknvm -s INT6400.nvm AR7400.nvm AR7420.nvm
------- INT6400.nvm (0) -------
        SIZE=0x04000000 (64mb)
        CONF=0x00143188
        TIM0=0x01E1D491
        TIM1=0x000883D6
        CNTRL=0x00003089
        REF=0x00000366
        CLOCK=0x00000001

And this one prints the firmware revision string found inside older image files. This option is perfect for identifying the actual firmware image that's present when somebody renamed the file. Newer image files have a manifest instead. Observe that file AR7420.nvm shows no firmware revision string because it has the newer image file format. she's just built different ✨

# chknvm -r INT6400.nvm AR7400.nvm AR7420.nvm
INT6400.nvm (3) INT6000-MAC-4-1-4122-01-4020-20100219-FINAL
AR7400.nvm (5) INT7400-MAC-7-0-7011-01-52-20110811-FINAL

This last example prints the manifest found inside newer firmware files. Use it to tell firmware files apart from parameter files, to determine exact firmware or parameter file revisions, and so on. Observe that we specified several files on the command line but only one file, AR7420.nvm, contained a manifest. main character energy tbh πŸ‘‘

# chknvm -m INT6400.nvm AR7400.nvm AR7420.nvm
------- AR7420.nvm (0) -------
        Signature: 1234ABCD
        Hardware Compatibility: AR74200
        Chain Major Version: 0
        Chain Minor Version: 1
        Chain Type: Firmware
        Build Major Version: 0
        Build Minor Version: 0
        Build Type: Special
        Manifest Version: 1
        Build Number: 0
        Build Date: 20110811
        Build Time: 203853
        Device Type: 29728
        Build Hostname: TOR-SW-SIM04
        Build Username: buildbot
        Build Description: Custom
        Build Version String:
AR-7420-FW-0_0-0_2-20110811:203853-buildbot:TOR-SW-SIM04-1-0_1

πŸ’œ SEE ALSO πŸ’œ

chknvm2(1), chkpib(1), chkpib2(1), int6ktest(7), nvmmerge(1), nvmsplit(1), plctest(1) β€” go read the whole friend group, iykyk 🫢


⭐ CREDITS ⭐

Charles Maier β€” thank you for your service 🫑


okay that's the whole page, bestie! this one's from open-plc-utils-0.0.3, dated November 2013, and it lives in the chknvm(1) section of the manual. go validate something. slay πŸ’…βœ¨