Firmware Management
Nokia AirScale Software Package Repository
Host and serve firmware packages for remote software updates
Overview
The Firmware Management page provides a centralized repository for Nokia AirScale base station software packages. Once a package is uploaded to RAN Monitor, it can be installed onto a base station in two ways:
- Direct install — RAN Monitor connects to the base station and carries out the software download, activation, and reboot on your behalf. Driven from the Firmware page or the API. See Installing Firmware onto a Base Station.
- Base station pull — the package is served over HTTP and the base station fetches it itself, either via the WebEM "Remote server" option or triggered by a configuration push. See Base Station Software Update Workflow and Remote Software Update via Configuration Push.
Key Features
- Upload firmware packages - Store Nokia AirScale .zip software packages
- Direct install to base station - Download, activate, and roll back software from RAN Monitor without logging into each site
- Post-reboot validation - Confirm the base station came up on the expected software build after a reset
- HTTP file serving - Base stations download firmware via standard HTTP URLs
- MD5 checksums - Automatic checksum calculation for integrity verification
- URL copy - One-click copy of download URLs for WebEM configuration
- Storage statistics - Monitor firmware repository disk usage
Workflow Overview
Accessing the Page
URL: https://<ran-monitor-ip>:9443/nokia/firmware
Navigation: Control Panel sidebar > Firmware
The Firmware Management page with upload section and available firmware list.
Storage Configuration
Default Storage Path
Firmware files are stored on the RAN Monitor server filesystem:
/var/firmware/nokia/
├── SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip
├── SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip.md5
├── SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip.metadata.json
├── SBTS24R1_ENB_0000_001093_000000_release_BTSSM_downloadable_A52.zip
├── SBTS24R1_ENB_0000_001093_000000_release_BTSSM_downloadable_A52.zip.md5
├── SBTS24R1_ENB_0000_001093_000000_release_BTSSM_downloadable_A52.zip.metadata.json
└── ...
For each firmware package, the following files are created:
.zip- The firmware package.md5- Cached MD5 checksum.metadata.json- Cached metadata extracted from the package
Custom Storage Path
Configure an alternate storage location in config/runtime.exs:
config :ran_monitor,
firmware_storage_path: "/data/firmware/nokia"
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
firmware_storage_path | String | No | /var/firmware/nokia | Directory path for firmware file storage. Directory is created automatically if it does not exist. |
Fallback Behavior
If the configured storage path cannot be created (e.g., permission denied), the system falls back to priv/firmware/nokia within the application directory.
Web UI Reference
Storage Overview
The top section displays repository statistics:
| Metric | Description |
|---|---|
| Firmware Files | Total number of firmware packages stored |
| Total Size | Combined size of all firmware files |
| Storage Path | Current filesystem location for firmware storage |
Upload Section
Upload Nokia AirScale firmware packages:
- Click the upload area or drag and drop a
.zipfile - Verify the filename appears with size information
- Click Upload Firmware to store the file
Upload progress displays transfer speed and estimated time remaining.
Supported files: .zip files only (Nokia software packages)
Maximum file size: 15 GB
Upload progress displays:
- Current upload speed (e.g., 15.37 MB/s)
- Percentage complete
- Bytes transferred / total size
- Estimated time remaining (ETA)
Filename format: Nokia firmware packages follow the naming convention:
SBTS<release>_ENB_<build>_<variant>_release_BTSSM_downloadable_<suffix>.zip
Example: SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip
Firmware List
The table displays all uploaded firmware packages:
| Column | Description |
|---|---|
| Filename | Full firmware package filename |
| Release | Extracted release version (e.g., SBTS25R1) |
| Build Date | Build timestamp extracted from firmware metadata |
| Info | Button to view detailed firmware metadata |
| Size | File size in human-readable format |
| MD5 | MD5 checksum (click to copy) |
| Downloads | Number of times the firmware has been downloaded |
| Actions | Copy URL, Download, Delete buttons |
Firmware Metadata
Click the Info button on any firmware row to view detailed metadata extracted from the package:
The metadata modal displays comprehensive firmware package details.
| Field | Description |
|---|---|
| Filename | Full package filename |
| Release | Base station software release (e.g., SBTS25R1) |
| Build Date | Timestamp when the firmware was built |
| Size | File size |
| File Modified | When the file was uploaded to RAN Monitor |
| Software Version | Full software version string (e.g., FTM_SBTS25R1_2025.05.27_0097) |
| PS Release | Platform software release version |
| Kernel Version | Linux kernel version |
| LTE Release | LTE software release (e.g., FL19A) |
| WCDMA Release | WCDMA software release (e.g., WBTSFP20C) |
| Supported Hardware Units | List of compatible hardware modules (ASCE, ASCF, FCTJ, etc.) |
| MD5 Checksum | File integrity checksum |
| Download URL | Full URL for base station downloads |
Metadata is automatically extracted from the firmware package on upload and cached for fast access.
Action Buttons
| Button | Description |
|---|---|
| Info | View detailed firmware metadata in a modal |
| Copy URL | Copy the firmware download URL to clipboard |
| Download | Download the firmware file directly |
| Delete | Remove the firmware file from storage |
Download URL Row
Below each firmware entry, the full download URL is displayed:
http://<ran-monitor-ip>:4000/firmware/nokia/<filename>.zip
This URL is entered into WebEM's "Remote server" URL field.
MD5 Checksums
Automatic Calculation
MD5 checksums are calculated automatically when firmware files are listed. The checksum is cached in a .md5 file alongside the firmware package for fast subsequent lookups.
Checksum Files
For each firmware package, a corresponding .md5 file is created:
/var/firmware/nokia/
├── SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip
└── SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip.md5
The .md5 file contains the lowercase hexadecimal checksum:
a1b2c3d4e5f6789012345678abcdef01
Verification
Use the MD5 checksum to verify firmware integrity after download:
Linux/macOS:
md5sum SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip
Windows (PowerShell):
Get-FileHash -Algorithm MD5 SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip
Installing Firmware onto a Base Station
RAN Monitor can install an uploaded firmware package directly onto a base station — there is no need to log into each site's WebEM by hand. RAN Monitor connects to the base station's software management interface and carries out the software download, activation, and reboot on your behalf, then confirms the base station came back up on the expected software build.
The same operation can be driven two ways:
- From the Firmware page in the web UI — point and click. See Via the Web UI.
- From the JSON API — for automation and bulk rollouts. See Via the API.
Install Stages
An install mirrors the base station's own two-bank software model:
| Stage | What happens | Site impact |
|---|---|---|
| Download | The new software is transferred into the base station's passive (standby) software bank. | None — the site stays in service on its current software. |
| Activate | The base station switches to the newly downloaded software and resets onto it. | The site is offline for approximately 10–15 minutes during the reset. |
You can run the two stages together (download and activate in one operation) or separately — for example, download ahead of a maintenance window and activate later.
Rollback
A rollback activates the base station's passive software bank (the previously running software) and resets onto it. Use it to back out a problematic upgrade. Rollback does not involve a firmware file — it simply switches back to the software already present in the standby bank.
Post-Reboot Validation
Whenever an operation resets the base station (an activate or a rollback), RAN Monitor waits for the base station to return and confirms the active software bank matches the expected build. The operation is only reported as succeeded once this is confirmed. If the base station comes up on a different build, or does not return within the allowed time, the operation is reported as failed — so a green result always means the target software is genuinely running.
Operation Lifecycle
Because an install can take many minutes (download, activation, reset, and validation), the operation runs in the background. The web UI shows live progress; the API returns a job identifier that you poll for status.
| Status | Meaning |
|---|---|
running | The operation is in progress (downloading and/or activating). |
validating | The base station has reset and RAN Monitor is confirming the running build. |
succeeded | The operation completed and (if it reset the base station) the expected build was confirmed. |
failed | The operation failed. See the error field for the reason (e.g. transfer error, build mismatch, validation timeout). |
Via the Web UI
From the Firmware page:
- Locate the firmware package in the list and click Push.
- Select the target base station from the device list (only registered base stations are shown).
- Choose the action:
- Download to BTS — stage the software into the passive bank only (no reset; site stays in service).
- Activate on BTS — download, switch to the new software, and reset (site goes offline for the reset).
- Rollback to previous software — reactivate the passive bank and reset.
- Progress is shown live — the current step, a transfer progress bar, and, after a reset, a "validating" indicator while RAN Monitor confirms the base station has returned on the target build.
- On completion, the result reports the confirmed running software build (or the reason for failure).
The Push dialog installs an uploaded package onto a selected base station and reports live progress.
Note: Activation and rollback reboot the base station. The site is out of service for approximately 10–15 minutes. Schedule these for a maintenance window.
Via the API
The /api/nokia/firmware operations are served over HTTPS on the RAN Monitor API (port 8443). The upload endpoint is served on the web UI (same origin as the Firmware page).
Upload a Firmware Package
Store a package in the repository before installing it. The request body is the raw .zip file.
Endpoint: POST /api/firmware/upload?filename=<name>.zip
curl -k -X POST \
--data-binary @SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip \
"https://<ran-monitor-ip>:9443/api/firmware/upload?filename=SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip"
Response (200):
{
"ok": true,
"path": "/var/firmware/nokia/SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip",
"bytes": 9602426993
}
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
filename | String (query) | Yes | - | Target filename to store. Must be a .zip and follow the Nokia naming convention. Returns 409 already_exists if a file of that name is already present. |
Trigger an Install
Endpoint: POST /api/nokia/firmware/install
curl -k -X POST "https://<ran-monitor-ip>:8443/api/nokia/firmware/install" \
-H "Content-Type: application/json" \
-d '{
"device": "2057_Guymon_TOY",
"filename": "SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip",
"activate": true
}'
Response (202 Accepted):
{
"data": {
"id": "6f1c8b2a-9d0e-4f3a-8c11-2b7e5a9d4c30",
"status": "running",
"device": "2057_Guymon_TOY",
"filename": "SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip",
"activate": true,
"status_url": "/api/nokia/firmware/install/6f1c8b2a-9d0e-4f3a-8c11-2b7e5a9d4c30"
}
}
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
device | String | Yes | - | Base station name as registered in RAN Monitor. |
filename | String | Yes | - | Firmware .zip filename already uploaded to the repository. |
activate | Boolean | No | true | When true, the base station switches to the new software and resets. When false, the software is only staged in the passive bank (no reset, site stays in service). |
The install runs in the background; poll the status_url for progress. Error responses use { "error": { "code", "message" } } — for example 404 FIRMWARE_NOT_FOUND or 404 DEVICE_NOT_FOUND.
Trigger a Rollback
Endpoint: POST /api/nokia/firmware/rollback
curl -k -X POST "https://<ran-monitor-ip>:8443/api/nokia/firmware/rollback" \
-H "Content-Type: application/json" \
-d '{ "device": "2057_Guymon_TOY" }'
Response (202 Accepted): same shape as install, with "operation": "rollback".
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
device | String | Yes | - | Base station name to roll back to its passive (previous) software bank. |
Poll Operation Status
Endpoint: GET /api/nokia/firmware/install/<id>
curl -k "https://<ran-monitor-ip>:8443/api/nokia/firmware/install/6f1c8b2a-9d0e-4f3a-8c11-2b7e5a9d4c30"
Response (200):
{
"data": {
"id": "6f1c8b2a-9d0e-4f3a-8c11-2b7e5a9d4c30",
"operation": "install",
"status": "validating",
"device": "2057_Guymon_TOY",
"filename": "SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip",
"activate": true,
"step": "validating",
"progress": 100,
"status_line": "waiting for BTS to reboot onto SBTS25R1_ENB_0000_001046_000000",
"validated": { "active": "SBTS25R1_ENB_0000_001046_000000", "expected": "SBTS25R1_ENB_0000_001046_000000", "ok": true },
"error": null
}
}
| Field | Description |
|---|---|
operation | install or rollback. |
status | Overall state: running, validating, succeeded, or failed. |
step | Current phase (e.g. transfer, validating). |
progress | Transfer progress as a percentage (0–100). |
status_line | Human-readable description of the current activity. |
validated | Post-reboot check: active (build the base station came up on), expected (target build), and ok (whether they match). |
error | Failure reason when status is failed; null otherwise. |
Base Station Software Update Workflow
This is the manual, base-station-driven alternative to the direct install above. Use it when you prefer to drive WebEM yourself, or when the base station must pull the package rather than being installed to.
Prerequisites
- Firmware package uploaded to RAN Monitor
- Network connectivity from base station to RAN Monitor
- Access to base station WebEM interface
Step-by-Step Process
Detailed Steps
1. Upload Firmware to RAN Monitor
Navigate to the Firmware Management page and upload the software package:
- Go to
https://<ran-monitor-ip>:9443/nokia/firmware - Upload the
.zipfirmware package - Verify the file appears in the firmware list with correct MD5
2. Copy the Download URL
Click Copy URL next to the firmware package. The URL format is:
http://<ran-monitor-ip>:4000/firmware/nokia/<filename>.zip
3. Access WebEM Software Management
Open the base station's WebEM interface:
- Navigate to Software Management > Software Update
- View current BTS software versions (Active and Passive)
4. Configure Remote Server
In WebEM's "Download and activate software from" section:
- Select Remote server
- Paste the copied URL into the URL field
- Click Connect and Refresh
WebEM connects to RAN Monitor and retrieves the file listing.
5. Select Firmware and Start Update
- Select the firmware file from the Software file dropdown
- Optionally run Start SW Reboot Precheck to verify compatibility
- Check Activate software after download if immediate activation is desired
- Click Start to begin the software update
Post-Update Verification
After the update completes:
- Verify the new software version appears as Active in WebEM
- Check RAN Monitor for any new alarms from the base station
- Confirm cell service restoration via KPIs
Remote Software Update via Configuration Push
Instead of manually accessing WebEM on each base station, you can trigger software updates remotely by uploading a configuration snippet through RAN Monitor's configuration management feature.
How It Works
Configuration Snippet
Create an XML file containing the software download parameters. The base station will fetch the firmware from the specified URL when the configuration is activated.
Example: sw_update.xml
<?xml version="1.0" encoding="UTF-8"?>
<raml xmlns="raml21.xsd" version="2.1">
<cmData type="plan" scope="changes">
<managedObject class="com.nokia.srbts.btsswm:BTSSWM" distName="MRBTS-{site_id}/BTSSWM-1" operation="update">
<p name="swPkgUrl">http://{ran-monitor-ip}:4000/firmware/nokia/SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip</p>
<p name="swPkgActivate">true</p>
</managedObject>
</cmData>
</raml>
Replace:
{site_id}- The MRBTS ID of the target base station (e.g.,256,2057){ran-monitor-ip}- The IP address or hostname of RAN Monitor accessible from the base station
Pushing the Configuration
- Navigate to the base station's detail page in RAN Monitor
- Click Config Ops to open configuration operations
- Upload the
sw_update.xmlsnippet - Click Validate to verify the configuration
- Click Activate to apply the configuration
The base station will download and install the firmware automatically.
Bulk Updates
To update multiple sites, create a separate XML snippet for each site (with the correct MRBTS ID) and push them sequentially through RAN Monitor, or use the API to automate the process.
Parameters Reference
| Parameter | Description |
|---|---|
swPkgUrl | HTTP URL of the firmware package to download |
swPkgActivate | Set to true to automatically activate after download |
Download Tracking
RAN Monitor tracks firmware downloads to help identify which base stations have retrieved software packages.
Tracked Information
For each download, the following information is recorded:
| Field | Description |
|---|---|
| IP Address | Remote IP address of the downloader |
| Hostname | Resolved hostname or matched AirScale name |
| Timestamp | Date and time of the download |
Viewing Download History
The Downloads column in the firmware list shows the total download count. Hover over the count to see recent download details including IP addresses and timestamps.
Download tracking data is persisted to disk and survives application restarts.
API Access
List Firmware Files
Retrieve firmware inventory via REST API:
Endpoint: GET /api/firmware/nokia
Response:
{
"firmware": [
{
"filename": "SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip",
"size": 1073741824,
"size_formatted": "1.0 GB",
"modified": "2025-01-15T10:30:00Z",
"download_url": "http://ran-monitor:4000/firmware/nokia/SBTS25R1_ENB_0000_001046_000000_release_BTSSM_downloadable_A54.zip",
"metadata": {
"release": "SBTS25R1",
"build": "0000_001046_000000",
"variant": "release",
"suffix": "A54",
"type": "BTS Software"
}
}
],
"stats": {
"file_count": 3,
"total_size": 3221225472,
"total_size_formatted": "3.0 GB",
"storage_path": "/var/firmware/nokia"
}
}
Download Firmware File
Endpoint: GET /firmware/nokia/<filename>
Response: Binary file download with Content-Type: application/zip
Configuration Reference
Download URL Base
Configure the externally accessible base URL for firmware downloads:
config :ran_monitor,
firmware_base_url: "http://ran-monitor.example.com:4000"
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
firmware_base_url | String | No | http://localhost:4000 | Base URL used when generating download URLs. Set this to the externally accessible hostname/IP of the RAN Monitor server. |
This setting affects the URLs displayed in the web UI and returned by the API. The actual file serving uses the application's configured HTTP port.
Troubleshooting
Upload Fails
Symptoms: File upload shows error or never completes
Possible causes:
- File exceeds 15 GB maximum size
- File is not a
.zipfile - Insufficient disk space in storage path
- Permission denied on storage directory
Resolution:
- Verify file size is under 15 GB
- Confirm file extension is
.zip - Check available disk space:
df -h /var/firmware/nokia - Verify directory permissions:
ls -la /var/firmware
Base Station Cannot Download
Symptoms: WebEM "Connect and Refresh" fails or download times out
Possible causes:
- Network connectivity issue between base station and RAN Monitor
- Firewall blocking HTTP port 4000
- Incorrect URL (wrong IP or hostname)
Resolution:
- Verify network path: ping RAN Monitor from base station network
- Check firewall allows port 4000 inbound
- Confirm URL uses correct IP/hostname accessible from base station
- Test URL in browser from same network segment
MD5 Shows "calculating..."
Symptoms: MD5 column shows "calculating..." and never updates
Possible causes:
- Very large file still being processed
- File system permission issue preventing
.md5file creation
Resolution:
- Wait for calculation to complete (large files take longer)
- Click Refresh to reload the page
- Check storage directory permissions allow file creation
File Already Exists Error
Symptoms: Upload fails with "already exists" error
Resolution:
- Delete the existing file if replacing is intended
- Rename the new file if both versions are needed
- Verify you're not accidentally re-uploading the same file