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.nvmfolders 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 summarylooks goodmessage.-rβ Print the firmware revision string on stdout. This one also suppresses the summarylooks goodmessage.-sβ Print the SDRAM configuration block on stdout. This option automatically suppresses the summarylooks goodmessage. no take-backs.-qβ Suppresses printing of routine messages. Specifically, it suppresses the summarylooks goodmessage. 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.nvmfile 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 π
β¨
π¦ 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