What the MOM model actually is

Ericsson's 5G RAN configuration is a managed-object tree (MOM — Managed Object Model). On gNB-DU and gNB-CU, you interact with it through the AMOS command line, the ENM session shell, or directly via NETCONF. The commands look identical across all three contexts; the difference is the access path.

This cheatsheet covers Ericsson Cloud RAN and Baseband 6630/6648 with NR software (typically NR23.Q4 and later). I will focus on commands you will run today, not the exhaustive reference.

Core navigation commands

Listing managed objects

lt all

Loads the entire MO tree into the AMOS session. After lt all, you can reference MOs by short name in subsequent commands.

lt NRCellDU

Loads only NRCellDU instances. Use this when lt all is too slow on large nodes.

Showing attributes

get NRCellDU

Dumps all attributes of all NRCellDU MOs in the loaded tree.

get NRCellDU=NR01_1 administrativeState

Gets a single attribute on a single MO. Wildcards work:

get NRCellDU=.* operationalState

Setting attributes

set NRCellDU=NR01_1 administrativeState UNLOCKED

Locks/unlocks a cell. The cell will not transmit until UNLOCKED. Note the value is uppercase and exact — Ericsson is case-sensitive on enumerated values.

set NRSectorCarrier=NR01_1 configuredMaxTxPower 44

Sets max Tx power. Units are 0.1 dBm in many MOs — read the MOM reference before changing power.

Creating MOs

cr NRCellRelation=12 nRCellRef="MeContext=GNB02,...,NRCellCU=NR02_1"

Creates a neighbour relation. The reference DN must be exact; copy from lt NRCellCU output.

Deleting

del NRCellRelation=12

Always check with get before del. Once deleted, neighbour relations regenerate only via ANR if enabled.

Common daily workflows

Find a cell by ID or name

ma NRCellDU=.* nCI 12345

ma is match — finds MOs where the attribute matches the pattern.

ma NRCellDU=.* userLabel "SECTOR_A"

Lock and unlock for parameter changes

Most dynamic parameters can change without locking. For structural changes (PCI, root sequence index, frequency), lock first:

bl NRCellDU=NR01_1
set NRCellDU=NR01_1 physicalCellId 273
deb NRCellDU=NR01_1

bl is block (lock), deb is deblock (unlock). The shorthand keeps you fast.

Change electrical tilt

Electrical tilt lives on the antenna sub-unit:

lt AntennaSubunit
get AntennaSubunit=1 electricalAntennaTilt
set AntennaSubunit=1 electricalAntennaTilt 60

Units are 0.1 degree (so 60 = 6.0 degrees). The change takes effect immediately on Ericsson AIR units, but always verify with get after.

Check counters (PM)

Live counter snapshots are not done from AMOS directly — counters are reported via PM ROP files. But you can confirm a counter is being collected:

pmom NRCellDU pmRrcConnEstabAtt

This returns the counter description and current measurement state.

Reading alarms

alt

Lists all active alarms. Add filters:

alt -m

Major and above only. The alarm severity color coding follows ITU-T X.733.

Configuration backup before changes

cvms
cvmk before_pci_change

cvms shows existing configuration versions; cvmk makes a new named CV. Always make a CV before parameter changes you might need to roll back.

To roll back:

cvset before_pci_change

The node reboots into the named CV. Check with operations before doing this on a live cell.

Useful MOs and what lives in them

MOPurposeCommon attributes
NRCellDUDU cell configadministrativeState, nCI, physicalCellId, nRPCI
NRCellCUCU cell configcellLocalId, plmnIdList, nRTAC
NRSectorCarrierRF carrierconfiguredMaxTxPower, arfcnDL, arfcnUL
NRCellRelationNeighbournRCellRef, isHoAllowed, cellIndividualOffsetNR
GNBDUFunctionDU functiongNBId, gNBDUId, gNBIdLength
GNBCUCPFunctionCU-CP functiongNBId, plmnId, x2NodeName
AntennaSubunitAntenna configelectricalAntennaTilt, mechanicalAntennaTilt

Scripting and bulk changes

For more than a couple of cells, write a moshell script:

# bulk_pci.mos
lt NRCellDU
for x in $(get NRCellDU userLabel | grep SECTOR_A | awk '{print $1}'); do
  bl $x
  set $x physicalCellId 273
  deb $x
done

Run with amos <node> bulk_pci.mos. Always test on one cell before running a loop across a node.

ENM CLI vs AMOS

Most engineers use AMOS via moshell. ENM CLI is similar but has session-based context. The same commands work; differences are mainly in connection setup and authorization.

amos <node-name>           # opens AMOS session via OSS
bash -c "moshell <node-IP>" # direct connection if you have OAM IP

Common gotchas

> Always use get to verify your set worked. Some attributes silently reject invalid values without raising an error in AMOS.

  • Attribute values must match the type exactly. Integer attributes will reject quoted values; enumerated values must match the case in the MOM.
  • set on an attribute that requires lock without locking will give a generic "operation not allowed" message — easy to miss if you skim output.
  • lt all on a heavily configured node can take minutes. Scope your lt to specific MOs.
  • Configuration via NETCONF and AMOS share the same MO tree, but in-flight transactions can conflict. Avoid simultaneous changes from both.
Takeaway: Master lt, get, set, bl/deb, and cvmk and you can do 95% of Ericsson 5G operations work without ever opening a GUI.