APPNOTE-13 Morsectrl Guide
v2
1 Scope
This application note applies to products containing the ‘morsectrl’ Linux software package that is run on the Morse Micro MM6108 chip. The Morse Micro package ‘morsectrl’ is a tool created to send and receive commands from/to the Morse Micro chip. This document outlines the most frequently used commands.
Please note that ’morsectrl’ is designed for engineering testing and evaluation purposes only. Changing the configuration of the device can break regulatory compliance. For issues or questions, please contact support@morsemicro.com.
2 Frequently Used Commands
This section outlines the most frequently used commands in the ‘morsectrl’ package, including a brief description, usage and instructions.
2.1 Duty Cycle
duty_cycle <command> configure duty cycle mode. omit command to retrieve settings. enable <value> [options] <value> set duty cycle in % (0.01-100.00) -m <mode> mode of operation (0:spread, 1:burst). default:0 -u <unit> time unit of each burst record entry (us) -o enables or disables omitting control responses from the duty cycle budget. disable airtime return remaining airtime (us), (burst mode only)
The duty cycle is the percentage of time each device type operates or transmits on that channel. The command configures the duty cycle value along with the mode of operation to be used. The firmware supports two modes.
Spread - If an end-device uses the channel to transmit a frame for period Tair, then the duty-cycle restrictions will delay further transmissions by a duration Toff such that the overall duty cycle is not exceeded
Burst - This uses the concept of burst cycle. A burst cycle is a full cycle of Tair and Tidle. Tburst is a configurable duty cycle parameter, used to characterize the duration of a burst cycle. Using different values of Tburst, the duty cycle algorithm can be adjusted to address different use cases.
2.2 Version
version prints firmware version
Dumps the version string of firmware and ‘morsectrl’.
2.3 Serial
serial reads the chip serial number from OTP (zeroes if none blown)
Reads the chip serial number.
2.4 MCS
mcs <value> selects mcs mode(0~9) or type (auto) for auto rate control
Sets the MCS rate to use from 0-9. If ‘auto’ is selected, the MCS will be determined by the rate control algorithm. The ‘mcs’ command will only fix the MCS index at which the packets are sent.
This command is deprecated and the ‘txrate’ command should be used instead.
2.5 TX Rate
Usage: morsectrl -i wlan0 txrate [enable|disable] 'enable' must always be included when configuring a parameter to force ‘disable' will reset all forced rate parameters -m <value> MCS index (0-10) or (-1) to use default in firmware -b <value> tx bandwidth in MHz or (-1) to use default in firmware -f <value> duplicate format (0, 1, 2) or (-1) to use default in firmware -t <value> traveling pilots (0, 1) or (-1) to use default in firmware -s <value> short guard interval (0, 1) or (-1) to use default in firmware
The ‘txrate’ command provides more control over the tx rate compared to the aforementioned ‘mcs’ command. This command fixes the rates to use by fixing the MCS, guard interval, bandwidth, travelling pilots and the tx duplicate format.
2.6 JTAG
jtag <disable|enable> [GPIO] disable|enable jtag through RPi GPIO pin
Enables or disables the JTAG pin on the chip
2.7 Statistics
stats [options] reads/resets stats (all cores if none were mentioned) -a App core -m Mac core -u Uphy core -j outputs stats in a json format -p outputs stats in a human-readable json format -r resets stats for mentioned cores (resets all if none were mentioned) -f "key" filters stats according to the given key (case sensitive) -s filename the location of the firmware ELF
The ‘stats’ command dumps the chip statistics from the app, mac and phy cores. Individual statistics of different core can be obtained by passing the following arguments to ‘morsectrl stats’:
-m (for mac)
-u (for phy)
-a (for app)
If none of the above arguments is given then ‘morsectrl’ will dump the statistics from all the cores. Additionally the -r argument can be used to reset the chip statistics. This will reset the stats on all the cores. The -f command can be used to filter out any stats based on the key provided. The table below outlines all statistics dumped by the ‘morsectrl stats’ command.
NOTE: During power save operation the PHY statistics will reset each cycle
retry table: Retry Count Avg Time
Number of retries for a packet.
commands received
Commands received by the apps core
commands responded
Commands responded by the apps core
commands repeated
Number of commands that were repeated
commands failed
Number of times the device failed to send a command
commands response failed
Number of time the device failed to respond to a received command
commands pending
Number of commands pending to be processed
commands late
Number of times there is a late response for a command which will already have been timed out
last host ID
total_fh_page_irq
Number of times the from host pager interrupt was fired
total_fh_pages
Number of time the device successfully got the data from host after the fromhost interrupt was triggered
total_th_page_irq
Number of times the to host pager interrupt was fired
total_th_pages
Number of time the device successfully sent the data to host after the to host interrupt was triggered
Aon clk long calibration
Number of times the Aon clock was calibrated
Aon clk frequency
Value of the Aon clock frequency in Hz
Aon sleep duration adjusted for clock tolerance
Increments if the aon-clk cant handle the sleep-duration
number of PS_sleep
Number of times the chip when to sleep
woke from PS (timer)
Number of times the chip woke up due to the timer set by the dynamic ps timeout value
woke from PS (pin)
Number of times the chip woke up by the host wake up pin
Pager from_host reaped
Number of times the from host page has been pushed back to the pager
Pager to_host reaped
Number of times the to host page has been pushed back to the pager
to_host pages dropped (host in standby)
Invalid pages received
Total invalid pages received
Events to host sent
Number of events sent to the host
Events to host failed
Number of events the failed to be sent to the host
ARP requests detected
Information of the ARP packets. This will only be populated if the driver is loaded using enable_arp_offload modparam
ARP requests answered
Information of the ARP packets. This will only be populated if the driver is loaded using enable_arp_offload modparam
ARP requests dropped
Information of the ARP packets. This will only be populated if the driver is loaded using enable_arp_offload modparam
ARP requests let through
Information of the ARP packets. This will only be populated if the driver is loaded using enable_arp_offload modparam
No page for ARP response
Information of the ARP packets. This will only be populated if the driver is loaded using enable_arp_offload modparam
ARP table updated
Information of the ARP packets. This will only be populated if the driver is loaded using enable_arp_offload modparam
ARP gratuitous generated
Information of the ARP packets. This will only be populated if the driver is loaded using enable_arp_offload modparam
tx_status none to send
Increments when there is no tx status cached
tx_status couldnt get page
Increments when there is no cached page for tx status information
tx_status dropped
Increments if the tx status was dropped and not sent to host
tx_status buffer flushed
Number of times the tx status buffer was flushed as there were no pending tx status
tx_status transmission corrupted
Increments if the driver has inadvertently popped the same page twice for use in TX and has likely corrupted the original/new transmission
Wake action frames handled
pageset stats:
Pageset 0
Pages sent from the host to the chip
allocated
Number of from host pages used
total
Total number of from host pages used
Pageset 1
Pages sent to the host from the chip
allocated
Number of to host pages used
total
Total number of to host pages used
Apps main task unused stack (words)
Apps timer task unused stack (words)
RTOS heap free bytes
IPv4 Packets received
Number of ipv4 packets received
TCP Packets received
Number of TCP packets received
UDP Packets received
Number of UDP packets received
DHCP Packets received
DHCP information. This will only be updated if the driver is loaded with enable_dhcpc_offload modparam
DHCP discoveries sent
DHCP information. This will only be updated if the driver is loaded with enable_dhcpc_offload modparam
DHCP requests sent
DHCP information. This will only be updated if the driver is loaded with enable_dhcpc_offload modparam
DHCP lease updates sent
DHCP information. This will only be updated if the driver is loaded with enable_dhcpc_offload modparam
DHCP leases fully expired
DHCP information. This will only be updated if the driver is loaded with enable_dhcpc_offload modparam
DHCP leases obtained
DHCP information. This will only be updated if the driver is loaded with enable_dhcpc_offload modparam
DHCP leases renewed/rebound
DHCP information. This will only be updated if the driver is loaded with enable_dhcpc_offload modparam
Standby wakeup frame rx
The standby mode requirements will be facilitated by powering off the host when not sending or receiving traffic. The host will be powered on by toggling a GPIO address.This can be enabled by morsectrl standby command
Standby status frame (standby) tx
The standby mode requirements will be facilitated by powering off the host when not sending or receiving traffic. The host will be powered on by toggling a GPIO address.This can be enabled by morsectrl standby command
Standby status frame (awake) tx
The standby mode requirements will be facilitated by powering off the host when not sending or receiving traffic. The host will be powered on by toggling a GPIO address.This can be enabled by morsectrl standby command
To mcu wake pin toggle
The standby mode requirements will be facilitated by powering off the host when not sending or receiving traffic. The host will be powered on by toggling a GPIO address.This can be enabled by morsectrl standby command
Standby SA Query request tx
The standby mode requirements will be facilitated by powering off the host when not sending or receiving traffic. The host will be powered on by toggling a GPIO address.This can be enabled by morsectrl standby command
RX corrupt dot11 action frames
Number of corrupted rx action frames
BSS keep alive tx
Number of keep alive frames transmitted
TWT failed to flush tx status before umac pause
Number of times the device failed to flush TX status buffer before sending TWT UMAC traffic update
System uptime (us)
Mac Stats
No A-MPDU candidate
Number of packets not send as an AMPDU
commands expired in MAC req
Number of requested command failed by mac core
commands expired in MAC resp
Number of responded command failed by mac core
MPE reset
Number of times the MPE was reset
DCF STF fired
Number of time the STF was fired
DCF LTF fired
Number of time the LTF was fired
DCF energy detect fired
Number of time the energy detect was fired
DCF aborted
Number of times the TX was aborted by the mac. This would trigger a backoff for the packet to be TX'ed
DCF granted
Number of time TX was allowed by the mac
DCF medium busy before tx
Number of time the chip decided to TX but the medium was busy
beacon loss
Number of time the beacon loss was reported back to the host
beacon changed
Number of times the beacon has been changed. This would update if short beacons were being sent along with full beacons
beacon rssi changed
Beacons rssi change comparing to the last beacon sent
aid in tim
Number of times the AID bit in the tim information element is set.
tim contains aid, but STA awake
Number of time the AID bit in the beacon is set but the station is not in sleep state
tim group address
Number of beacons with bitmap control field in the tim information element is set
tim nothing
Number of times the beacons do not indicate that there is traffic present for the station
tim populated
Number of beacons with the block info data in the tim information element
DTIM_sleep_stats
The number of DTIM beacons received by the station
CTS_sleep_stats
CTS_PS frame arrived late
AGG N aggregates total
Total number of packets that were allowed to be sent as AMPDU
AGG N aggregate rounds
Total number of AMPDUS sent
AGG N aggregates
This stats shows the number of aggregation for every packet sent. The chip supports sending an AMPDU with 16 MPDUS in them. From the stats 46 packets are sent without aggregation, 19 sent with 1 mpdu aggregated, 5 sent with 2 mpdu aggregated and so on
AGG TX rate is NULL
These stats represent the reasons why the chip has decided to break the aggregation.
AGG TX rate mcs not same
These stats represent the reasons why the chip has decided to break the aggregation.
AGG TX param mismatch
These stats represent the reasons why the chip has decided to break the aggregation.
AGG TX max txop exceeded
These stats represent the reasons why the chip has decided to break the aggregation.
AGG TX active txop exceeded
These stats represent the reasons why the chip has decided to break the aggregation.
AGG TX length exceeded
These stats represent the reasons why the chip has decided to break the aggregation.
AGG crosses tbtt
These stats represent the reasons why the chip has decided to break the aggregation.
AGG crosses twt sp end
These stats represent the reasons why the chip has decided to break the aggregation.
AGG crosses RAW slot
These stats represent the reasons why the chip has decided to break the aggregation.
AGG crosses scheduled tx ts
These stats represent the reasons why the chip has decided to break the aggregation.
RX Total
Total number of RX frames
RX Pass FCS
Total number of RX frames with correct FCS
RX Sig Field Err
Total number of RX frames with signal field errors
RX buffer unavailable
Number of times the chip did not have RX buffers available
RX MAC was too slow
Number of times the chip did not RX mac path was slow
TX Total
Total number of packets sent on air
TX Revoked
Total number of times the TX was rejected due to STF, LTF or energy present in the medium
TX non-contending NDP revoked
TX Lifetime expired
Total number of times the lifetime timestamp of the packet that expired. This will unschedule and drop the packet
TX returned to UMAC due to power save
Total number of packet returned to the host for buffing as the station was asleep
TX dropped due to power save
TX pkt lifetime us
Packet lifetime value in microseconds
TX Malformed frame
Number of packets with invalid mac header length
TX QoS NULL
Number of QOS null frames sent
TX ACK Valid
Number of times the TX packet was acknowledged with a valid ACK
TX ACK Timeout
Number of times the ACK timeout for the packet sent
TX CTS Timeout
Number of times the CTS was timeout for the RTS frame sent
Longest delayed TX ACK (in uS):38
Record the longest delayed ACK time
TX ACK already finished
The transmission of ACK packet was finished but ack timeout was triggered
TX ACK Invalid (FCS)
Number of times the ACK is invalid due to FCS failure
TX ACK Invalid (scrambler)
Number of times the ACK is invalid due to ackid scrambler value was wrong
TX ACK Invalid (orphaned)
Number of times the chip saw and ACK not meant for it
TX ACK lost
Total number of ACK that was not received by the device for the packet it sent
TX CTS lost
Total number of CTS that was not received by the device for the RTS packet it sent
TX fragment
Total number of packets sent as fragments
TX BlockAck
Total number of blockack sent
RX BlockAck
total number of blockack received
TX NDP ACK
total number of ndp acks (not blockacks) sent
TX round-trip success %
Percentage of the data sent that were successfully acked by a NDP ack or a blockack
TX requests
Total number of time the mac has requests the phy to send the packet
TX avg backoff slots
Average of accumulated backoff slots
TX medium collisions
Number of times the packet was sent was not acked.
TX Encryptable pkts
Number of time the chip prepared a frame for encrypted transmit
TX ReEncryptable pkts
Number of times the chips tries to encrypt the frame that has already been encrypted
TX Unencryptable pkts
Number of times the chips was not successful in finding a key AND the host marked this packet as being protected
RX transaction(s) dropped
Number of times the RX frames was dropped
RX Undecryptable ccmp pkts passed to host
Number of times the frame wasn't decryptable and was passed up to the host. Could be an encrypted frame that chip was unable to find a key for
RX Decryptable pkts
Total number of RX frames decrypted
RX Undecryptable pkts
Total number of times the chips was not able to decrypt the RX frames
Unexpected crypto
Invalid
RX MPDU delimiters Invalid
Number of delimiters that was corrupted when receiving MPDU's
RX MPDU delimiters
Number of valid MPDU delimiters
BEACONS RX
Number of beacons received
BEACONS TX
Number of beacons sent
BEACONS TX delayed
Number of beacons that were delayed to be sent on air
BEACONS late from host
Number of beacons sent late by the host to chip to go out on air eventually
BEACONS late from host delay (avg uS)
Average time of beacon when the host was late to send it to the chip
TX NDP Probe Req
Number of NDP probe request sent
RX NDP Probe Req
Number of NDP probe request received
TX RTS/CTS max attempts reached
Number of time the chips reached it maximum retry limit for RTS/CTS exchange
TX RTS
Total RTS frames sent
TX CTS
Total CTS frames sent
RX RTS
Total RTS frames received
RX CTS
Total CTS frames received
RX CTS Invalid (orphaned)
Number of CTS frames that were not meant for the device that received it
TX RTS/CTS success
Percentage of successful RTS CTS exchange
MPE started
Invalid
MPE Rx peeked for key
Invalid
RX no key found in key inspection
Invalid
MPE Rx loaded key
Invalid
MPE Rx done
Invalid
MPE IRQ count
Number of time the MPE interrupt was fired
MPE YDS in-queue pre-start
Invalid
RX transaction(s) total
Number of times the phy informed the mac of an available RX packet
RX NDP total
Number NDP packets received
RX A-MPDU/S-MPDU
Number of AMPDU/SMPDU that were received
RX Non-A-MPDU/Non-S-MPDU
Number of packets received that were not AMPDU's/SMPDU's
Total RX MPDUs found by MPE
Total RX empty delims
Number of MPDU with their delimiter empty
RX transactions without any MPDUs to process
RX no valid first frame
Number of times the first MPDU receives is not valid
RX MPDUs with FCS fail
Number of times the RX MPDU failed with wrong FCS
RX MPDUs with MIC fail
Number of times the RX MPDU failed with wrong MIC
RX MPDUs with unknown MAC header
RX with invalid mac header
RX YDS alloc fail
Invalid
RX PV1 MPDUs
Invalid
MPE RX which could be decrypted with a 2nd pass
Invalid
RX transactions without any response
Invalid
RX MPDUs not for us
Number of frames that were not meant for the device receiving it.
RX AMPDU bitmap 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Number of bits set in the bitmap field of the blockack received.
TXOP: TXOP count
Number of packets that are in TXOP
Total TXOP time
This is the TXOP end time minus the TXOP start time
Average TXOP time
This is the average TXOP end time minus the TXOP start time for all packets
Total TXOP Tx packets
Number of packets that are in TXOP
Average TXOP Tx packets
Average number of packets that are in TXOP
RAW:
RAW Assignments
Valid
Number of RAW assignments. Currently only supporting up to 8 assignments
Truncated by tbtt
Number of times an assignments that get truncated due to the next tbtt
Invalid
Number of invalid assignments (/unsupported) observed
Already past
Number of assignments that are valid but system time has already passed
Delayed due to RAW
From aci queue
ACI delayed frames due to RAW
From bc/mc queue
Broadcast / Multicast delayed frames due to RAW
From abs time queue
Absolute time frames delayed due to RAW
Frame crosses slot
Frames that could've been sent in the RAW but were too long for slot
CALIB:
Managed Calibration
Quiet calibration granted
A quiet calibration was granted
Quiet calibration rejected
A quiet calibration was rejected
Quiet calibration cancelled
A quiet calibration was in progress, but then cancelled
Non-Quiet calibration granted
A non-quiet calibration was granted
Calibration complete
A quiet/non-quiet calibration completed
Duty Cycle:
Duty Cycle Target (%)
Configured duty cycle restriction
Duty Cycle TX On (us)
Total transmitter 'on air' (Tair) time in usec
Duty Cycle TX Off (Blocked) (us)
Total transmitter 'blocked' (Toff) time in usec
Duty Cycle Max toff (us)
Maximum time the t_off timer is started for
Duty Cycle Early Frames
Number of packets ignoring duty cycle restrictions
Duty Cycle illegal transmission
Increments if there was a transmission outside the duty cycle used
Duty Cycle traffic dropped (NDP)
Number of NDP frames dropped because of duty cycle restrictions
Duty Cycle traffic dropped
Number of non NDP frames dropped because of duty cycle restriction
WUP QosNull not acked
Number of times the QOS Null frames was not acked
QosNull resent
Number of times the QOS null frames was re transmitted
QosNull queued behind another
Number of times there are multiple QOS null framed queued to be sent
QosNull tx backing off
Number of times QOS null frame fails before the MAC gives up on trying to send PS updates
MAC State:
These are the states that the mac core stores internally.
RX state
These are the states that the mac core stores internally.
TX state
These are the states that the mac core stores internally.
Channel config
These are the states that the mac core stores internally.
Managed calibration state
These are the states that the mac core stores internally.
Powersave enabled :1
These are the states that the mac core stores internally.
Dynamic powersave offload enabled :1
These are the states that the mac core stores internally.
STA PS state
These are the states that the mac core stores internally.
Is waiting on dynamic powersave timeout
These are the states that the mac core stores internally.
TX blocked by host cmd
These are the states that the mac core stores internally.
Is waiting for medium sync
These are the states that the mac core stores internally.
N packets in QoS queues
These are the states that the mac core stores internally.
Stale AID removed
These are the states that the mac core stores internally.
MAC main task unused stack (words)
MAC timer task unused stack (words)
TWT sta num sp entered
Number of times the device enters the TWT service period
TWT sta enters sp too early
Number of times the device enters the TWT service period early
TWT sta missed sp (already over)
Number of times the device completely missed the TWT service period
TWT sta missed start of sp (already started)
Number of times the device missed the start of the service period
TWT sta sp already active on ps wake
Number of times the device is in active TWT and is out of powersave
TWT announcement delay from sp start (avg us)
Average time for the service period delayed from its start
TWT operation halted
Number of times the TWT operations is halted
TWT operation resumed
Number of times the TWT operations is resumed
TSF for sta has been (re)set
TSF timer has been reset
Standby exit from wakeup frame
Standby frames stats
Standby exit for association
Standby frames stats
Standby exit from userspace
Standby frames stats
Standby SA Query response rx
Standby frames stats
Standby SA Query response timeouts
Standby frames stats
Standby deep sleep enter
Standby frames stats
Standby deep sleep exit (assoc)
Standby frames stats
Standby deep sleep exit (no assoc)
Standby frames stats
Vendor IEs matching OUI filter
Increments if the vendor information element has a matching oui (Organizationally unique identifier)
PHYPSM MAC IRQ status zero count
Invalid
PS scheduled after beacon miss
Number of times the device would go into power save if it misses a beacon
PS scheduled after pin wake
Number of times the device would go into power save after the host indicated to be awake via the wake pin
Phy Stats
Temperature(Celcius):45
Temperature of the chip
Vbat(mV)
Shows the voltage of the battery. This is updated every 60 second and should remain constant
PMU Switched to Vbat setting (mV)
VBAT calibration and sets the PMU settings accordingly
Vbuck Trim
Shows the stats for buck voltage, for transmission (TX) it should be highest 12, for ideal or receiving (RX) state it should be 5 and for power save mode it should be 0.
Current RF frequency Hz
Current channel information
Current Operating BW MHz
Current channel information
Current Primary Channel BW MHz
Current channel information
DCF medium went busy after go
Number of times the medium went busy after the PHY decided to transmit the frame
DCF medium went busy during start
Number of times the medium went busy when the PHY decided to transmit the frame
DCF time in past
Number of times the time for the frame to be sent was in the past
MPE RX overflow
Number of time the RX source buffer overflowed
MPE RX underflow
Number of time the RX source buffer underflowed
RX detected less than guard IFS
Shows that the receiver detects the data faster and not enough Interface frame spacing.
TX Scrambler Init Value
The TX scrambler init value
RX Scrambler Decoded Byte
Shows the decoded scrambler value which is based on the TX Scrambler Init Value in the received packet.
Signal Field Error
Signal field errors reported from PHY
Packet Detect Fired STF
Number of times the STF was fired
Packet Detect Fired LTF
Number of times the LTF was fired
Packet Detect Timestamp (us)
Time at which the last packet detect was triggered
Non-NDP PSDU Rx
Number of PSDU that are not NDP
Coarse Frequency Offset
Shows the coarse frequency offset as an angle. Coarse frequency offset in Hz
Final Frequency Offset:-540
Shows cores + fine value and it shows the Frequency Offset of local oscillator, unit (Hz).
Detected Sub-Band
Winning STF Correlator. If a wrong correlator is triggered, the classification algorithm corrects it for LTF search and before writing to statistics.
Corr0 Power
The accumulated max peak power of every peak detected up to STF triggering
Corr1 Power
The accumulated max peak power of every peak detected up to STF triggering
Corr2 Power
The accumulated max peak power of every peak detected up to STF triggering
Corr3 Power
The accumulated max peak power of every peak detected up to STF triggering
Corr4 Power
The accumulated max peak power of every peak detected up to STF triggering
Corr5 Power
The accumulated max peak power of every peak detected up to STF triggering
Corr6 Power
The accumulated max peak power of every peak detected up to STF triggering
Corr7 Power
The accumulated max peak power of every peak detected up to STF triggering
Corr8 Power
The accumulated max peak power of every peak detected up to STF triggering
AGC Gain
Value of the AGC gain used
AGC LNA Status
Value of the LNA status
AGC FEM Rx Gain
Value of FEM rx gain
AGC LNA Bypass
If LNA bypass is used
AGC Interference Detected
If interference was detected by the AGC
Received Power:-37
Signal strength of the last received frame
Detected Channel BW
This is the detected channel bandwidth ( also referred to as Primary channel bandwidth) of the received signal
STF Status
This parameter indicates which correlators reached min peaks by the STF triggering time and it’s been used in mode classification algorithm
Energy Meter Reading
This parameter denotes the total in-band energy for a Rx signal at the time of STF triggering
Energy Meter threshold
Energy meter threshold value used
Noise dBm
Noise level of the medium
Detected RX Mode
The format of the packet received by the device. The values can be s1g format, Duplicate 1MHz format, Duplicate 2MHz format or a long format
Oper BW Indicator
Denotes the detected operating channel bandwidth of the received signal
Corr2S Energy
Indicates the energy in the secondary 2MHz subchannel.
Corr4S Energy
Indicates the energy in the secondary 4MHz subchannel.
Noise Metric 2
This is the noise metric for correlator C2P
Signal Metric 2
This is the signal metric for correlator C2P
Range Select
This parameter indicates the starting bit position to select 8 bit range out of the 16 bits as the input range for packet detect
TX Abort(s)
if value is greater than 1, it's the number of times tried for transmission and aborted. The value will be 0 is transmission was successful
TX Stale(s)
Increments if a stale TX is detected
TX Underflow(s)
Shows how many times the mac that requested date to TX to the PHY and the PHY was unable to get the data fast enough
RX Filtered
Number of time the PHY received data that was not meant for it
DGC Energy Meter Pwr dB
Invalid
DGC Inband Pwr dB
Invalid
DGC Diff Pwr dB
Invalid
DGC BackOff Pwr dB
Invalid
DGC CoffFactor Pwr dB
Invalid
DGC Multiplier
Invalid
DGC Shift
Invalid
TX Traveling Pilots
Number of times the packet was transmitted using traveling pilots
Max Stack Used
min_neset
The minimum noise estimate of the medium
NB INTRF Detected
If there was interference detected
NB INTRF Subc nulled
Shows that the sub carrier are null or not.
NB INTRF Num Subc nulled
Shows how many sub carrier are null.
NB INTRF Index
Shows which sub carrier is determined by interference detection to have interference.
NB INTRF Num
Shows how many times we have detect interference.
NB INTRF SIR dB
Shows the signal to interference ratio , unit (dB).
NB INTRF Power dBm
Shows the received interference power on a narrow band in dBm.
FSG tx rounds
shows the count of fast symbol generator transmit.
DC locked state I
Shows the state of the high pass filter for I (IQ samples).
DC locked state Q
Shows the state of high pass filters and Q (IQ samples).
LTF Corr Power
Shows the power of a long training field.
STF number of peaks
shows the number of peaks on a short training field.
Avg ring osc freq mhz
show the average frequency of ring osc which is used to identify the process corner chips.
ring osc0 count
show the count of ring osc 0 which is used to identify the process corner chips
ring osc1 count
show the count of ring osc 1 which is used to identify the process corner chips
ring osc2 count
show the count of ring osc 2 which is used to identify the process corner chips
ring osc3 count
show the count of ring osc 3 which is used to identify the process corner chips
ring osc4 count
show the count of ring osc 4 which is used to identify the process corner chips
Tx subband centre frequency Hz
Invalid
Tx subband operating BW MHz
Invalid
Tx subband primary channel BW MHz
Invalid
Tx subband primary index
Invalid
Tx subband channel changed count
Invalid
SIG_FIELD_FAIL BAD STF
Number of bad STF detected
SIG_FIELD_FAIL BAD LTF
Number of bad LTF detected
SIG_FIELD_FAIL CRC Error
Number of failed CRC check
Servo Gain
Invalid
I trim
Invalid
Q trim
Invalid
2.8 Channel
channel [options] sets channel parameters or read associated or full channel frequency if none of [-c|-o|-p|-n] given -a prints all the channel i.e. Full, DTIM and current -c <value> channel frequency in kHz -o <value> operating bandwidth in MHz -p <value> primary bandwidth in MHz -n <value> primary 1 MHz channel index -r ignores regulatory max tx power -j prints full information in easily parsable JSON format
The ‘channel’ command is used to set or dump the channel information for the device. If no options are given then the command will dump the current channel information that is being used by the device. If the above arguments are used then the command will configure the device to use the specified channel information.
2.9 FSG (Fast Symbol Generator)
fsg <command> enable <iterations> <duty cycle> [ifs] iterations number of transmissions, set to -1 for infinite duty cycle the duty cycle to maintain between transmissions %(0.01-99.99) ifs inter-frame spacing between PSDUs in microseconds (default:160us) disable
For FCC and other regional-specific certification testing at high duty cycle and is enabled by using the testing firmware version titled ‘mm6108_dvt.bin’’. This command will configure the firmware to transmit data at the given duty cycle with the provided IFS either indefinitely or for the given number of iterations.
The content of the transmission contains valid LTF+STF+SIG fields, but not necessarily valid 80211 data. PSDU content can be random or pseudo-random (i.e. incrementing, non-zero).
2.10 MAC Address
WARNING: Once set, this is not reversible
It is important that VDDIO be provided as 2.5V before writing the MAC address. For more information, please refer to the ‘MAC OTP Read and Write’ guide.
macaddr [-w <mac_addr>] reads the MAC address of the chip if -w was not passed -w <mac_addr> writes the given 'XX:XX:XX:XX:XX:XX' MAC address to the chip (this is not reversible)
Read and write the MAC address that the WLAN interface will be configured to.
Example usage: # morsectrl macaddr -w 0c:bf:74:05:dc:71 Chip MAC address: 0c:bf:74:05:dc:71 # ifconfig wlan0 Link encap:Ethernet HWaddr 0C:BF:74:05:DC:71 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
2.11 Wakeaction
wakeaction <destination mac address> <hex string payload> sends a wake action frame of given payload to a destination mac address.
This command sends a wakeaction frame from the AP to the desired station. On reception of the wake action frame a GPIO can be toggled which in turn could be used to wake the host up. This command requires the GPIO to be set by the Board Configuration File (BCF).
2.12 DHCP
dhcpc [enable | discover | get | clear | renew | rebind | update] configure DHCP client enable - enable DHCP client discover - do a discovery and obtain a lease get - get the current lease clear - clear the current lease renew - renew the current lease rebind - rebind the current lease update - send a lease update to the driver
This command is only applicable if the driver has been loaded with enable_dhcp_offload modparam. With this feature enabled the leases can be renewed without having to wake up the host processor. Through this method, assuming a DHCP server is running somewhere on the network, the station should receive, and automatically apply, an IP address within 10 seconds of associating. If currently leased address needs to be updated, it can be triggered with the following ‘morsectrl’ command:
# morsectrl dhcpc update
Note that this will only apply a lease if enable_dhcpc_offload is set to 1. The lease can be obtained manually as well but note that this is intended only for testing and verification purposes and should not be used in normal operations. The steps to manually do this:
On an associated, running station, enable the DHCP client with the following ‘morsectrl’ command:
# morsectrl dhcpc enable
Within 10 seconds, the client should automatically perform a discovery and obtain a lease. To shortcut this, and perform a discovery now, execute the following command:
# morsectrl dhcpc discover
The lease can be retrieved using:
# morsectrl dhcpc get
To force a DHCP renewal or rebinding sequence with the following commands:
# morsectrl dhcpc renew # morsectrl dhcpc rebind
Note that if the DHCP client is enabled and does not have a lease, it will attempt a discovery sequence every 1-10 seconds, as per the RFC.
2.13 QoS
qos [options] <queue_ID> sets/reads QOS parameters for given queue ID -c <value> number of AIFS slots to wait for -t <value> maximum possible TX OP in us -m <min> <max> contention window MIN,MAX values
This command sets access category parameters or reads the current values of the different access categories. There are 4 access categories that can be read or configured :-
Best effort
Background
Video
Voice
If configuring the access category the following options can be uses along with the queue that wants to be configured:
-c: AIFS slots (Arbitration Inter Frame Spacing) - The minimum wait time before accessing the medium.
-t: TX OP - The Transmission Opportunity (TXOP) is an interval of time, in milliseconds, when a client has the right to initiate transmissions towards the AP.
-m: Contention window values - The window defines the min and max contention time of various stations who contend with each other for access to channel
2.14 Random Packet Generator (RPG)
rpg <command> start [options] starts rpg -l listening mode (other options are overlooked) -c <value> number of packets to send (default unlimited) -s <value> specifies the size of the packets to be sent (min: 24). Random if not specified. -d disables random packet contents (for casim) stop terminates rpg (if started) stats [options] reads rpg stats collected (if started) -r reset the rpg stats (if started) srcaddr [mac address] sets source mac address of rpg packets dstaddr [mac address] sets destination mac address of rpg packets ampdu [number] force using ampdu with [number] mpdu
This is a random packet generator (RPG) that is enabled by using the testing firmware version titled ‘mm6108_dvt.bin’’. This feature is mainly used for test, debugging and development purposes. When using RPG, TX packets originate from the Apps core - not from the driver. On the RX side it counts the number of packets that were received and were successfully decoded.
2.15 Bandwidth
bw <value> sets bandwidth(1|2|4|8) or reads current bandwidth if no arguments were given
Sets the bandwidth value. Once the devices are associated the bandwidth value cannot be changed. This is deprecated.
2.16 TX Scaler
txscaler <value> scales tx power (takes values -15 to +15 dB)
The ‘txscaler’ command is used mainly for bench evaluation and experimentation purposes. This command takes the values in dB and boosts or backs off the default transmit power by the given value. It can take the values from -15 dB to +15 dB. Note that this should not be used for normal operation as it can break region specific regulatory rules.
2.17 OTP
WARNING: It is important that VDDIO be provided as 2.5V before writing to OTP. For more information, please refer to the ‘MAC OTP Read and Write’ guide.
otp <bank_num> [-w <bank_val>] read/write OTP bank given from chip bank_num bank number to read/write from/to. eg.: for 610x [0-7] -w <bank_val> burns the value to the OTP bank
The ‘otp’ command can be used to read and write the OTP bits programmed to the chip.
# morsectrl otp 0 OTP Bank(0): 0x0
To read the OTP bits for all the banks [0-7]:
# morsectrl otp [0-7] Output: OTP Bank(0): 0x0 OTP Bank(1): 0x0 OTP Bank(2): 0x800000 OTP Bank(3): 0x0 OTP Bank(4): 0x0 OTP Bank(5): 0x60daf38d OTP Bank(6): 0x0 OTP Bank(7): 0x0
To write the bits in decimal value:
# morsectrl otp 3 -w 4194304 Output: OTP Bank(3): 0x400000 (Hex value)
To write the bits in hex value:
# morsectrl otp 0 -w 0x700000 Output: OTP Bank(0): 0x700000
2.18 A-MPDU
ampdu [enable|disable] 'enable' will enable AMPDU sessions. Must be run before association. 'disable' will disable AMPDU sessions. Must be run before association.
The ‘ampdu’ command is responsible for enabling or disabling the AMPDU feature in the chip. This command should be executed before the device is associated. The command will show no effect if executed after association.
3 Revision History
01
26/06/2023
Initial document release
02
16/12/2024
Revised document formatting
Last updated
Was this helpful?