The syntax of the
tamper_cfg application is:
# tamper_cfg --help Change tamper interface configuration Copyright(c) Digi International Inc. Version: 1.20 --cfg0 HEX Set the value of the register TAMPER_CFG0 Bit 0: enable tamper detection (1 = enabled, 0 = disabled) Bit 1: reconfigure tamper interface (1 = allowed, 0 = disallowed) Bit 2: set active input level (1 = high, 0 = low) Bit 3: reserved (write 0) Bit 4: enable output if a tamper event occurs (1 = enable, 0 = disable) Bit 5: set active output level (1 = high, 0 = low) Bit 6: power off the device after a tamper event (1 = enable, 0 = disable) Bit 7: clear tamper events (1 = allowed, 0 = disallowed) Tamper events are cleared by writing 0 to the tamper event register --cfg1 HEX Set the value of the register TAMPER_CFG1 Bit 0-1: Averager (0: 1 sample; 1: 2 samples; 2: 4 samples; 3: 8 samples Bit 2: Use internal Voltage Reference (1 = enabled, 0 = disabled). WARNING: this affects all analog tampers and ADCs, see documentation for more details This register is only used in Analog tampers --help Print this message. --iface N Tamper interface to which the command is applied. This argument must be right after the program name --input DEC Select input pin for tamper detection --output DEC Select output for tamper event, if enabled --ticks DEC/HEX (Analog only) Number of tens of ticks every which the analog tamper must be sampled (1 tick = 1/1024 second) --thres_l DEC/HEX (Analog only) Lower threshold for the comparator window --thres_h DEC/HEX (Analog only) Higher threshold for the comparator window --pwroff_delay DEC Set delay (in tenths of a second) to power-off after tamper event on interface N --ack Perform the acknowledgment of tamper event --clear Perform the clear of tamper event --save Save current settings to NVRAM Before saving, all changes are volatile --show Show current settings of the tamper interfaces HEX is a C-like 8-bit hexadecimal number. DEC is a non-negative decimal number.
Show tamper interface settings
--show option prints the settings that currently apply.
For registers that can contain bitfields, the meaning of individual bits is shown.
# tamper_cfg --iface 0 --show Tamper interface 0: TAMPER0_CFG0: 0xff Tamper detection enabled 1 Interface reconf allowed 1 Tamper input active level 1 Tamper output pin enabled 1 Tamper output active level 1 Tamper event powers device off 1 Clear tamper events enabled 1 TAMPER0_CFG1: 0x00 Averager mode (bit 0) 0 Averager mode (bit 1) 0 Internal voltage reference 0 MCA_TAMPER0_IO_IN: 1 MCA_TAMPER0_IO_OUT: 7 MCA_TAMPER0_DELAY poweroff: 0 (x 100 ms) MCA_TAMPER0_EVENT: 0x00 Tamper event signaled 0 Event acknowledged 0
Change current settings
There is one option for changing each register of the tamper interfaces, as shown in the command line reference. See TAMPER_CFG0 and TAMPER_CFG1
|If the Interface reconfiguration allowed option of a tamper interface is set to 0, it cannot be reconfigured.|
New settings are kept in RAM (volatile) memory until saved with the
This means that changes not saved to NVRAM will be lost when the device is powered off.
Once the new settings have been saved to NVRAM, you can restore factory defaults by updating the MCA firmware without option
-k (this option would keep NVRAM settings).
When the firmware restarts, it detects empty NVRAM sectors and restores its factory contents.
Imagine a command like this:
# tamper_cfg --iface 1 --cfg0 0xA0 --input 3
This command does the following for tamper interface 1:
Writes 0xA0 to CFG0:
Bit 7 = 1: allow clear tamper events
Bit 6 = 0: disable power off on a tamper event
Bit 5 = 1: set output level active high
Bit 4 = 0: disable output on a tamper event
Bit 3 = 0: reserved
Bit 2 = 0: set active input level low
Bit 1 = 0: disallow reconfiguration of the tamper interface
Bit 0 = 0: disable tamper detection
Selects input 3 as tamper detection pin.
When run, the command fails:
# tamper_cfg --iface 1 --cfg0 0xA0 --input 3 Reconfiguration of the tamper interface 1 is not allowed At least one operation could not be performed
--show option to see the current status of interface 1:
# tamper_cfg --iface 1 --show Tamper interface 1: TAMPER1_CFG0: 0xa0 Tamper detection enabled 0 Interface reconf allowed 0 Tamper input active level 0 Tamper output pin enabled 0 Tamper output active level 1 Tamper event powers device off 0 Clear tamper events enabled 1 TAMPER1_CFG1: 0x00 Averager mode (bit 0) 0 Averager mode (bit 1) 0 Internal voltage reference 0 MCA_TAMPER1_IO_IN: 0 MCA_TAMPER1_IO_OUT: 0 MCA_TAMPER1_DELAY poweroff: 0 (x 100 ms) MCA_TAMPER1_EVENT: 0x00 Tamper event signaled 0 Event acknowledged 0
In this case, the tamper interface 1 CFG0 was set to 0xA0 as instructed.
However, this value implicitly disables the reconfiguration (see bit 1), preventing input pin 3 from being selected.
These settings are still volatile (since option
--save has not been used) and will be lost when the board is powered off.
Save current settings
--save option writes the current configuration into NVRAM.
# tamper_cfg --iface 1 --cfg0 5F --input 3 --output 4 --pwroff_delay 35 --show --save Configuration saved. Tamper interface 1: TAMPER1_CFG0: 0x5f Tamper detection enabled 1 Interface reconf allowed 1 Tamper input active level 1 Tamper output pin enabled 1 Tamper output active level 0 Tamper event powers device off 1 Clear tamper events enabled 0 TAMPER1_CFG1: 0x00 Averager mode (bit 0) 0 Averager mode (bit 1) 0 Internal voltage reference 0 MCA_TAMPER1_IO_IN: 3 MCA_TAMPER1_IO_OUT: 4 MCA_TAMPER1_DELAY poweroff: 35 (x 100 ms) MCA_TAMPER1_EVENT: 0x00 Tamper event signaled 0 Event acknowledged 0