For the complete documentation index, see llms.txt. This page is also available as Markdown.

APPNOTE-13 Morsectrl Guide

v2

Download as PDF

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


App Stats

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 :-

  1. Best effort

  2. Background

  3. Video

  4. 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

Release Number
Release Date
Release Notes

01

26/06/2023

Initial document release

02

16/12/2024

Revised document formatting

Last updated

Was this helpful?