chknvm2(1)
π chknvm2(1) β Qualcomm Atheros PLC Image File Validator π
okay bestie, gather round, because this one is a lil tool with a big job: it's the Qualcomm Atheros Powerline Toolkit's very own firmware-file vibe checker. it's called chknvm2 and it is here to sniff out the red flags in your Atheros HomePlug AV firmware files before you go and do something embarrassing. π΅οΈββοΈβ¨
β¨ SYNOPSIS β¨
chknvm2 [options] file [file] [...]
π¦ DESCRIPTION π¦
so basically, this baby checks Atheros HomePlug AV firmware files for obvious errors β and we're talking the classics:
- obsolete format π
- incorrect file size π
- bad checksums π
- read errors π
and that's it, bestie. it makes no attempt to check any internal information other than firmware header checksums, image lengths and image checksums. it's not doing a deep dive into your file's soul, it's just doing a vibe check on the surface. optionally, it can display header and image information on stdout if you want the receipts. π
this program handles both the older Thunderbolt and Lightning and the newer Panther and Lynx firmware file formats. iconic, flexible, multitalented. π
and here's the tea: it validates files directly from memory, which means it's faster than the program chknvm β but it needs more memory at runtime. tradeoffs, babes. that's the deal. βοΈ
this program is part of the Qualcomm Atheros Powerline Toolkit. see the AMP man page for an overview and installation instructions. iykyk. π«Ά
π OPTIONS π
-iβ print revision string identity fields in fixed-width columns. this one is so useful when you're searching.nvmfolders for a specific build. it's giving organized. it's giving spreadsheet energy. π-mβ display manifest content, if present. the manifest is a special module, included in some image chains, that contains useful information about the chain. heads up: this option suppresses the summary'looks good'message. no good-news sandwich for you, sorry. π₯ͺ-rβ print the firmware revision string on stdout. this option automatically suppresses the summary'looks good'message too. π-qβ suppresses printing of routine messages. specifically, it suppresses the summary'looks good'message. quiet mode, stealth mode, lowkey mode. π€«-vβ print additional information such as the image header for each image processed. this information can be used to distinguish one firmware file from another, if you know what to look for. π-?,--helpβ print program help summary on stdout. this option takes precedence over other options on the command line. it's the main character, it goes first. πββοΈ-!,--versionβ print program version information on stdout. this option also 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. give them the receipts, bestie. π§Ύβ¨
πΈ ARGUMENTS πΈ
fileβ the name of an Atheros image file. by convention, Atheros Image files have a.nvmfile extension, but this program does not enforce this convention. live your truth, name your files whatever. π¦
π DISCLAIMER π
Qualcomm Atheros firmware file structure and content is proprietary to Qualcomm Atheros, Ocala FL USA. Consequently, public information is not available. Qualcomm Atheros reserves the right to change firmware file structure or content or 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.
like... they can just change it. any time. no notice. no apology. periodt. π
π₯ EXAMPLES π₯
the classic: validate one file
this example reads file abc.nvm and validates it. the message shown indicates that the file is the correct length, image headers and images have the correct length and checksum, and there are no read errors. the file can be either the newer or older format. π
# chknvm2 abc.nvm
abc.nvm looks good
three files, three wins
the following example reads three files in succession and reports on each one. you can suppress good news with the -q option. π
# chknvm2 INT6400.nvm AR7400.nvm AR7420.nvm
INT6400.nvm looks good
AR7400.nvm looks good
AR7420.nvm looks good
the revision string reveal
this next example prints the firmware revision string found inside older image files. the option can be used to identify the actual firmware image present when the filename has been changed. newer image files have a manifest, instead. observe that file AR7420.nvm shows no revision string, since it is the newer image format where firmware images are compressed. π€―
# chknvm2 -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
fixed-width columns, fixed-width slay
the following example displays the firmware revision strings, from the last example, as fixed width columns. observe that the external filename may, in some cases, not reflect the file content. sneaky. π
# chknvm2 -i INT6400.nvm AR7400.nvm AR7420.nvm
INT6000 4020 20100219 4.1 INT6400.nvm (3)
INT7400 0052 20110811 7.0 AR7400.nvm (5)
manifest destiny
this example prints the manifest found inside newer firmware files. this can be used to distinguish firmware files from parameter files, determine exact firmware or parameter file revisions and so forth. observe that we specified several files on the command line but only one file, AR7420.nvm, contained a manifest. π
# chknvm2 -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 π
chknvm(1), chkpib(1), chkpib2(1), int6ktest(7), nvmmerge(1), nvmsplit(1), plctest(7)
π CREDITS π
Charles Maier
and that's the whole page, bestie!! this is from the open-plc-utils-0.0.3 era, dated November 2013, and honestly? iconic of it. go validate some firmware, you absolute legend. π«Άπβ¨
π¦ 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