-
Notifications
You must be signed in to change notification settings - Fork 191
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VoNR calls not completing properly #382
Comments
In general the VoNR is not working as expected mainly due to failure in setting up a dedicated bearer for the call. This is still largely work in progress. Will let you know once its ready to be tested again
Regarding issue with video calls, please attach a pcap taken for below scenario
|
@herlesupreeth Thanks for the clarification.
Are there any workarounds for this right now, or is this pretty much entirely broken in srsRAN? I’ve seen some of the discussion threads around this, and it looks like it potentially works sometimes, or am I misunderstanding?
For this, should it just be a PCAP on the host machine with |
So far we haven't had any luck making VoNR call work when tested between two devices (as per the main contributor it worked when calling a device from an application server). I dont think there is a workaround for it. I will try to see whether this issue can be fixed easily or not.
Yes, thats right |
OK, great thanks. Let me know if there's anything I can help with.
Great, appreciate it, thanks. I'll grab this at my first opportunity. |
I'm also interested in the PCAPs so I can improve the logic more. just tested the new fix in my setup, but as @herlesupreeth I do a different approach, to test MOC and MTC, as I'm still fighting with the IPhone as a second device without a success attaching it to network. here is my test for an Orig Call with the new Fix : |
Will do, may not get to it until tomorrow evening or Saturday (I’m currently on work travel) but will do as soon as I can get to my workstation.
I’ve found Android devices to be more flexible with this setup, and can provide more detailed logging. Do you have access to any rooted Android devices or ones running custom ROMs? If not, send me an email and I can arrange that if you’d like. |
@Rashed97 its more like vendor issues, they look down the devices to be only usable with normal Operators, not with Lab/Private, even if they attach they don't activate voice just data ( e.g. IPhones), I tried to reach Samsung for example over some internal channel, but did get any answer, not sure what the sense and reason behind looking it. Anyway, I just bought a Xiaomi Redmi Note 12 5G and it attached perfectly to the network with both Regs/QoS VoNR directly from the experimental Branch without any issue, what I noticed though that there is no N5 upon SIP UPDATE, but everything just worked fine. here are pcaps from my Tests with and without Precondition : e2e_with_and_withoutPrecond.zip @herlesupreeth, can you give it a look if there is something to be improved ? EDITE: just to add, this test done with two devices using the experimental 5G Branch and the new srsRAN Test Branch, I repeated it many time without any issues. |
@NUCLEAR-WAR Awesome work, I checked the pcap with precondition and it seems to work well.
This could be because the packet filters/flow descriptions didnt change (because SDP ports didnt change) So basically I should update the srsRAN dockerfile to use the latest commits right? |
Thank you both. I just got home after a few weeks of travel so I can resume testing as well. I’ll build an srsRAN container with the test branch shortly. @NUCLEAR-WAR have you seen the test2 branch as well? Looks like it might have additional fixes but I haven’t gotten a chance to look at it too deeply yet. |
actually, Its because I did not add the in-Dialog UPDATE to the logic that should be easy to add, this will not affect the case where we use the docker setup directlly, but could affect advanced use cases where the update could be for Ringtone/announcements injection ( the cases mostly will be using external IMS or using an AS that do some early media ).
gnb.yml :
qos.yml :
No, this is new to me my test was with the "Test" branch, not sure what the the "Test 2" has for changes, did have a look in it. |
I updated to the latest srsRAN test2 branch and used @NUCLEAR-WAR your qos.yml but still not seeing the calls complete. Here is the latest pcap collection. Update: alto tested with the normal test branch. Same behaviour with the call just not getting a dial tone, but not hanging up either. Here are the pcaps for that as well: |
@Rashed97 |
@NUCLEAR-WAR by full trace, do you mean a pcap on all interfaces? If so, here you go 😄 : Edit: also here is the log from the attached docker containers for the network core and IMS: https://gist.github.com/Rashed97/194d8ed2db912d72806949356bfc90ab Edit: I ran tcpdump on interface "any" and filtered out port 22 since I'm SSH'ed into the machine from my laptop, but everything else is in the pcap, so you'll see a bunch of irrelevant packets as well. |
@Rashed97 I am still looking into the trace now but have some questions: Is the device you are using a dual SIM device and both SIM Cards are in it ? if so, try to use separated devices. does the PC running gNB has enough resources ? not having enough resources could lead to disconnecting the device from Network, can you describe your setup ? Best Regards |
@NUCLEAR-WAR see answers below:
No, the SIM cards are inserted into 2 separate devices, but they’re the same model, running the same Android build.
Yeah sure. I’m running the entire stack on a machine without Ubuntu 24.04 with an i9-9900K and 96GB RAM. The radio is a modified B210 from Aliexpress (they’re calling it a B220 since it has an upgraded FPGA), and I’m running it with QOS, MIMO, and QAM256. The radio is a bit far from the drives so I can move them closer but I don’t think it’s a signal issue. |
@NUCLEAR-WAR is there anything that you think is worth trying to fix the multiple contact entries for the devices, or do you not believe that's what's causing issues right now? I don't see any issues on the RAN but maybe I'm missing something. Edit: regarding the device disconnections, this appears to be the UE. The Qualcomm modem on these devices tries to fall back to LTE then 3G if the VoNR call fails (in this example, the SIP session is never initiated properly and the device times out waiting for that). Since I don't have an LTE eNB stood up yet, there's no LTE to fall back on, so then it just drops off the network entirely. The phone comes back online on the NR gNB as soon as the call is terminated (either by the modem or I hang up). |
@Rashed97 can you send also the logs from the log folder ?
|
@NUCLEAR-WAR Sure, here you go: https://gist.github.com/Rashed97/539698328fc909b6fbb6aad0f4c89687 I switched off MIMO as I was having a lot of late commands and underruns with that enabled, and the UHD benchmark showed a lot of dropped samples. After I switched back to SISO, I then ran the UHD benchmark again with a 23.04 MHz sampling rate and got no dropped samples, late commands, or other errors, so not I'm really sure why I'm still having lates and underflows in the gNB log. |
@Rashed97, please follow the comments from @herlesupreeth in this issue starting from comment 1874053020. usually this happens if the PC performance ,where srsRAN is running, has poor performance, also for 5G its strongly recommended to attach a GPSDO to the SDR to prevent any signal instability. |
@NUCLEAR-WAR I had already done some of that but went ahead and made some additional adjustments. CPU is now running close to it's max 5GHz 100% of the time, but I'm still getting lates and underflows, tho significantly less. The calls are still not completing however. Here is the latest gnb.log and output from the core and IMS: https://gist.github.com/Rashed97/868106e0d4e68705c10819086afd74fc The gNB log doesn't look to have any radio failures anymore, but calls are still failing the same way. I've also attached the pcaps from srsRAN and the full pcap of the entire system. |
@Rashed97, I will add some optimization for the N5 Request to deal with scenarios where there is multiple contacts due to disconnects without de-register, that will prevent overwriting the AppSession(saw that happend in your last log) and sends error response on the transaction where no QoS available. I will do some modifications and some tests to verify the changes. |
@NUCLEAR-WAR thanks, let me know what else I can help with. I'll take a look at why I'm having srsRAN issues. i9-9900K running at 100% C0 shouldn't have any issues with this, so need to investigate a bit. I've got a GPSDO arriving today as well tho. |
@herlesupreeth I've gotten a chance to look at this finally, it's a problem with the UEs - a few bugs with Qualcomm's VT components on this version of their Android BSP. Working to fix these, then will try again, just wanted to keep you updated. Also do you have any ideas on why I'm still experiencing late commands, and packet underflow/overflow on my setup? I followed your instructions that @NUCLEAR-WAR linked, which significantly reduced them, and also setup an external clock with a GPSDO, but still seeing some issues. |
@Rashed97, first to prevent multiple unnecessary contacts, go to scscf folder and to the file kamailio_scscf.cfg and change the following setting as follows :
this will set the Max Contact to one, the max contact behavior is set to "2" that means it will overwrite the old contact, so in case the device lost its RAN Link and is registering again, this will prevent creating multiple contact and keep only the last known one. I done some modifications for the N5 Routing logic, you could give it a try, replace the mt.cfg,mo.cfg,register.cfg in the pcscf/route folder with those ones : I ran a few tests and they worked fine with the settings I suggested for the max contact. I will plan a PR later so they can be reviewed. |
@NUCLEAR-WAR Just gave it a whirl and it's behaving the same, if not worse. The devices fall off the network as soon as I try to make a call most of the time, and the rest of the time they hang in the same way as before. Here are the logs from the core and IMS and gNB: https://gist.github.com/Rashed97/b0c388507481f291893b5de0ae4ddbc9 Here are the pcaps from the system and gNB: pcaps-241113-194629.zip Question about the overall setup: should I have defined the IMS QoS parameters in Open5GS under the IMS APN for every subscriber? I have that setup for every subscriber, but not sure if there's something potentially conflicting. Edit: I've cleaned up the P-CSCF config files a bit (spacing, tabs, making sure the N5 patching is properly ifdef-ed, etc). Here are the configs in case you want to see them: https://github.com/Rashed97/docker_open5gs/tree/exp_5g_ims_pyhss/pcscf/route Edit 2: that branch I linked above has my current working dir. I rebased the existing exp_5g_ims_pyhss on top of master so I could track the changes made for it properly. It also has various cleanups, like adding WITH_N5 guards and fixing IP address hardcoding in the P-CSCF configs. |
yes, it should be setup for all subscribers you use for calling Edit:
Its okay if you receive underflow/overflow occasionally, but it shouldn't be too often and too many. Btw, did you set clock as external in the configuration file as well? |
@Rashed97 you are using the wrong deploy file, please use sa-vonr-deploy.yaml, this will tell the Docker Stack that the deploy is in 5G Mode and activate all the Ifdef conditions/IP Addresses/Docker env variables, so you don't need to edit the files, also will load only the 5G Core, the 4G core is not needed in the setup.. I see with the new config/settings there is no more INVITEs to dead contacts, and therefore less trouble on creating N5 Session, you need to fix the RAN instability though, as the device is losing RAN Link, otherwise nothing could help could help, maybe bad SDR/SDR Driver, or something is killing the ressoucres, the issues in gNodeB logs happens in the same second so many times, that from my point of view is pretty bad. |
OK, that’s what I thought, thanks for confirming.
I did set it to external, yes, tho when starting the gNB the UHD driver says “setting clock to automatic” or something like that (on my phone at the moment but can get the actual line in a few hours). After I made some changes to the config for my CPU (assigning cores to L1, L2, etc) I think I’ve gotten them minimized, as reflected by the latest gnb.log I linked in the last comment. I don’t see any PRACH or PUxCH or similar errors in this log.
I have DEPLOY_MODE force set to 5G in my tree for that. I have the exact same behavior with sa-vonr-deploy.yaml. The reason im using deploy-all.yaml is I’m looking at how to enable both N5 and Rx for VoNR and VoLTE coexistence, but obviously I need VoNR working first. I have 2 radios so my plan is to connect one as a gNB and one as an eNB eventually.
OK, that’s what I thought I was seeing regarding the invite so glad you can confirm. Regarding the RAN, given the latest log showing far fewer late commands and underflows/overflows, do you think that’s still the issue? My htop looks very close to that too when it’s running, none of the cores gets above 20% utilization. I’ve tried swapping USB cables, USB ports, everything to no avail. Lastly could you confirm the SHA1 you used for srsRAN? I just want to make sure I’ve got the right setup compiled. |
That would be interesting to see, srsRAN added support for QoS modify, that would be the first step, not sure though if Open5GS support it, as VoNR still experimental as you see., but now I suggest to run VoNR only until it get stable, before starting the next step.
45b07b516bf15fdd606d48b0c62ff15459b54712 gnb I fixed RTP/RTCP Port store/retrieval on the mt.cfg file, perhaps you give it a try : |
Hypothetically should work fine, with the current srsRAN and srsRAN_4G setup (once I can get VoNR to work properly), at least for what I'm trying to do. My goal is to have 1 UE on NR and 1 UE on LTE with a call between them. The changes needed are mostly in the P-CSCF configs right now, since there's no reliable way to determine if the initial registration message coming from a UE needs to routed to PCF over N5 or to PCRF over Rx. I'm investigating whether adding an endpoint to Open5GS to query "current attached network" is the best option for this or if other options exist.
I'm not seeing that SHA1 in the srsRAN_Project repo at all, can you check and see if you can? I'm at 366744f14425b00008f4fea379d8d0c9c3fa43d5 since I've been pulling in the latest test branch every few days. And sure I'll give the new mt.cfg a try later this evening. |
@NUCLEAR-WAR tried the new mt.cfg, same issues. I'm noticing this in the logs tho:
Looks like the QoS session modification is failing on PCF? This would result in the RAN not even attempting the PDU session modification, correct? |
@Rashed97 this could have have many reason, can you provide the logs and the pcaps? |
@NUCLEAR-WAR sorry for the delay. I'll get more logs and PCAPs tomorrow, but looks like the AppSession parsing from the the original INVITE request is producing that AppSession 0:
Additionally, I spent the weekend upgrading my computer, so I've got a 9950x now, and i have 0 messages in gnb.log now. No late commands or under/overflows, so hopefully my RAN issues should be resolved now. |
@Rashed97 interesting to know why its failing in your case, I will be happy to look at the logs. In my Test the Session is stored and retrieved correctly:
|
@NUCLEAR-WAR Thanks, I just resolved it actually, I had a typo in my config file so it wasn't storing the AppSession ID. I'm observing some weird UE behaviour with the devices disconnecting from the network, so I'm taking a look at that on the UE side now. |
@Rashed97 thanks for the info, just in next time add a notice that you edited the files, so I can know that its a custom file not the one provided by this repo. |
@NUCLEAR-WAR yes my configs are in the repo I linked above. I have modified versions of the configs that just have formatting fixes (tab, white spaces, etc) and cleaned up comments, just to be able to read them easier. I also have PCF_IP and PCSCF_IP in them, along with added ifdef for WITH_N5. I’ll upload the latest copies shortly. |
Hi,
First I wanted to thank you for the wonderful setup and guides. Using this, I've successfully set up a 5G SA network with a B210 radio. Using the experimental 5G IMS PyHSS branch, I've been able to get several Android UEs to register successfully with P-CSCF/S-CSCF. The UEs show a successful registration, and SMSoIP works fine. Calls however, do not complete; the devices never even get a dial tone. P-CSCF logs show that the N5 routes seem to be working fine, so I'm not really sure where to start with this.
A note on these UEs: when I start the B210 as an eNB instead of a gNB, they can register on the LTE network and VoLTE works fine. There appears to be an issue with video calling over IMS, but I have not looked at it enough to have any idea whether that's a UE issue or IMS issue.
Please let me know what logs you'd like me to provide and I can provide those in a follow up. I'm happy to help debug this however you'd like.
Thanks!
The text was updated successfully, but these errors were encountered: