NR-SA UL-MIMO and NR-NSA UL-MIMO #5

Closed
opened 2025-07-25 07:08:29 +02:00 by rtommy · 7 comments
rtommy commented 2025-07-25 07:08:29 +02:00 (Migrated from github.com)

The nrUlmimoBands array related to NR-SA UL-MIMO and the nrUlmimoBandsEndc array related to NR-NSA UL-MIMO features only consider MIMO UL value 2 (which means fourLayers).

if (component.mimoUl && component.mimoUl.value === 2) {
    nrUlmimoBandsEndc.add(`n${component.band}`);
    foundNrUlMimoInEndc = true;
}
...
if (component.mimoUl && component.mimoUl.value === 2) {
    nrUlmimoBands.add(`n${component.band}`);
    foundNrUlMimo = true;
}

Perhaps component.mimoUl.value > 0 would be more accurate (or (component.mimoUl.value === 1 || component.mimoUl.value === 2)) to include twoLayers too?

According to packet-nr-rrc.c:

static const value_string nr_rrc_MIMO_LayersUL_vals[] = {
  {   0, "oneLayer" },
  {   1, "twoLayers" },
  {   2, "fourLayers" },
  { 0, NULL }
};
The `nrUlmimoBands` array related to `NR-SA UL-MIMO` and the `nrUlmimoBandsEndc` array related to `NR-NSA UL-MIMO` features only consider MIMO UL value 2 (which means `fourLayers`). ```js if (component.mimoUl && component.mimoUl.value === 2) { nrUlmimoBandsEndc.add(`n${component.band}`); foundNrUlMimoInEndc = true; } ... if (component.mimoUl && component.mimoUl.value === 2) { nrUlmimoBands.add(`n${component.band}`); foundNrUlMimo = true; } ``` Perhaps `component.mimoUl.value > 0` would be more accurate (or `(component.mimoUl.value === 1 || component.mimoUl.value === 2)`) to include `twoLayers` too? According to [packet-nr-rrc.c](https://gitlab.com/wireshark/wireshark/-/raw/master/epan/dissectors/packet-nr-rrc.c): ```c static const value_string nr_rrc_MIMO_LayersUL_vals[] = { { 0, "oneLayer" }, { 1, "twoLayers" }, { 2, "fourLayers" }, { 0, NULL } }; ```
high3eam commented 2025-07-28 09:36:57 +02:00 (Migrated from github.com)

@rtommy
Value 2 in the json represents 2 UL streams, which is why the NR UL MIMO detection for UEs with two uplink streams works fine at the moment. For future devices though with potential capabilities more than that, I agree it can be useful to add detection for 4 streams as well.

@rtommy Value 2 in the json represents 2 UL streams, which is why the NR UL MIMO detection for UEs with two uplink streams works fine at the moment. For future devices though with potential capabilities more than that, I agree it can be useful to add detection for 4 streams as well.
rtommy commented 2025-07-28 09:52:41 +02:00 (Migrated from github.com)

My view is different. It's not about what the device can or cannot do. Similar to Wireshark.

This is simple interpretation of possible/allowed values. If the standard says the UL MIMO can be 1/2/4 then all value shall be supported in the code in general. Please consider our other discussion where you already added support for a feature which will come in 3GPP rel 9 (NR 6Rx) which is definitely not supported in any device.

So if someone posts a UE cap info with UL MIMO 4, your script won't support it correctly and can mislead the user.

My view is different. It's not about what the device can or cannot do. Similar to Wireshark. This is simple interpretation of possible/allowed values. If the standard says the UL MIMO can be 1/2/4 then all value shall be supported in the code in general. Please consider our other discussion where you already added support for a feature which will come in 3GPP rel 9 (NR 6Rx) which is definitely not supported in any device. So if someone posts a UE cap info with UL MIMO 4, your script won't support it correctly and can mislead the user.
high3eam commented 2025-07-28 11:21:55 +02:00 (Migrated from github.com)

@rtommy
Wouldn't this be a topic for the parser itself? The features js script just uses the data from the parser. Maybe @handymenny has an idea.

@rtommy Wouldn't this be a topic for the parser itself? The features js script just uses the data from the parser. Maybe @handymenny has an idea.
handymenny commented 2025-07-31 18:11:04 +02:00 (Migrated from github.com)

Hi,

component.mimoUl.value has the real value, i.e. for an ue capability source component.mimoUl.value = 1 means oneLayer , component.mimoUl.value = 2 means twoLayers

Hi, component.mimoUl.value has the real value, i.e. for an ue capability source component.mimoUl.value = 1 means oneLayer , component.mimoUl.value = 2 means twoLayers
rtommy commented 2025-08-01 03:39:54 +02:00 (Migrated from github.com)

Okay so this means fourLayers (component.mimoUl.value = 4) is possible, allowed and supported.

Okay so this means fourLayers (component.mimoUl.value = 4) is possible, allowed and supported.
rtommy commented 2025-08-08 09:00:39 +02:00 (Migrated from github.com)

It seems you have not updated the code to support MIMO UL 4. Any particular reason?

It seems you have not updated the code to support MIMO UL 4. Any particular reason?
high3eam commented 2025-08-08 10:18:57 +02:00 (Migrated from github.com)

@rtommy done

@rtommy done
Sign in to join this conversation.