PageSourceSearch

https://ele361l.github.io/assets/js/a5032cd2.b6c52793.js

js ele361l.github.io collected 2026-10-03 09:10:38 UTC 9,493 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8094],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),m=a,g=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return n?r.createElement(g,i(i({ref:t},p),{},{components:n})):r.createElement(g,i({ref:t},p))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,i[1]=s;for(var c=2;c<o;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},6429:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const o={slug:"5GsrsRAN",title:"End-to-end 5G Network Creation",authors:["murat","kagan"],tags:["5G","srsRAN","USRP","COTS UE"]},i=void 0,s={permalink:"/blog/5GsrsRAN",source:"@site/blog/2023-12-19-5G-srsRAN/srsRAN-5G.md",title:"End-to-end 5G Network Creation",description:"In this post, we are creating a 5G standalone (SA) network using srsRAN. We will use a COTS UE, Redmi Note 12 Pro 5G and USRPB210 Software Defined Radio (SDR) from NI to attach with the gNB we have created.",date:"2023-12-19T00:00:00.000Z",formattedDate:"December 19, 2023",tags:[{label:"5G",permalink:"/blog/tags/5-g"},{label:"srsRAN",permalink:"/blog/tags/srs-ran"},{label:"USRP",permalink:"/blog/tags/usrp"},{label:"COTS UE",permalink:"/blog/tags/cots-ue"}],readingTime:2.325,hasTruncateMarker:!0,authors:[{name:"Murat Sever",title:"Lab c
1oordinator",url:"https://github.com/murat-sever",imageURL:"https://github.com/murat-sever.png",key:"murat"},{name:"Ka\u011fan Aydemir",title:"Student",url:"https://github.com/KaganAydemir",imageURL:"https://github.com/KaganAydemir.png",key:"kagan"}],frontMatter:{slug:"5GsrsRAN",title:"End-to-end 5G Network Creation",authors:["murat","kagan"],tags:["5G","srsRAN","USRP","COTS UE"]},prevItem:{title:"Vessel Tracking using AIS",permalink:"/blog/AIS1"},nextItem:{title:"NOAA Satellite Image Reception with RTL-SDR",permalink:"/blog/SatNOAA"}},l={authorsImageUrls:[void 0,void 0]},c=[{value:"srsRAN 5G Stack",id:"srsran-5g-stack",level:2},{value:"COTS UE (5G Phone) Selection",id:"cots-ue-5g-phone-selection",level:2},{value:"Running",id:"running",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...o}=e;return(0,a.kt)(d,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"In this post, we are creating a 5G standalone (SA) network using ",(0,a.kt)("a",{parentName:"p",href:"https://srs.io/"},"srsRAN"),". We will use a COTS UE, Redmi Note 12 Pro 5G and USRPB210 Software Defined Radio (SDR) from NI to attach with the gNB we have created. "),(0,a.kt)("h2",{id:"srsran-5g-stack"},"srsRAN 5G Stack"),(0,a.kt)("p",null,"The srsRAN Project is a complete open-source RAN solution from SRS which is 3GPP and O-RAN compliant. It is entirely developed by SRS with minimal external dependencies. It supports FDD/TDD on all FR1 bands.\n",(0,a.kt)("img",{alt:"srsRAN Image",src:n(6312).Z,width:"1185",height:"539"})),(0,a.kt)("p",null,"srsRAN can be installed in two ways. One way is to use ",(0,a.kt)("strong",{parentName:"p"},"binary packets")," suited to your distribution. The other that we have also used is to ",(0,a.kt)("strong",{parentName:"p"},"install it from source"),". srsRAN gNB is configured using ",(0,a.kt)("strong",{parentName:"p"},"YAML configuration files"),". It supports ",(0,a.kt)("strong",{parentName:"p"},"nested configuration")," parameters. Configuration can be arbitrarily split across multiple files. Any parameter not explicitly configured uses ",(0,a.kt)("strong",{parentName:"p"},"default values"),". Documentation contains full list of configuration parameters. "),(0,a.kt)("p",null,"In this work, the core network and gNB will run on the same machine, a powerful Victus (HP) laptop. USRP B210 is directly plugged into USB3 port. So, don't use a USB hub unless it's very high performant. We are not using any external clock in our setup, but it's recommended to use one if available.\n",(0,a.kt)("img",{alt:"5G setup",src:n(6319).Z,width:"1920",height:"1440"})," "),(0,a.kt)("h2",{id:"cots-ue-5g-phone-selection"},"COTS UE (5G Phone) Selection"),(0,a.kt)("p",null,"This is a very critical step. Because many phones advertised as 5G are only NSA. They always prefer to attach to 4G. Don't use a phone bought from operator since those phones will be locked to specific PLMN values. You can check known mobile phones reported as working from srsRAN documentation. You should also add the SIM credentials to the 5GC subscriber list. This is well documented in the docs as well.\nIf you want internet access from the phone you should set IP forwarding and masquerade. "),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"echo 1 > /proc/sys/net/ipv4/ip_forward\niptables -t nat -A POSTROUTING -o <internet_nic> -j MASQUERADE\n")),(0,a.kt)("h2",{id:"running"},"Running"),(0,a.kt)("p",null,"Now it's time to take the phone out of airplane mode, try to attach to the cell. Every second we see some statistics on the console, like shown below. PDU session is created, UE is assigned an IP, and I can ping the UE from gNB.\n",(0,a.kt)("img",{alt:"5G console",src:n(6172).Z,width:"1371",height:"533"})," "),(0,a.kt)("p",null,"The following metrics are provided in the console output:"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"center"},"metric"),(0,a.kt)("th",{parentName:"tr",align:"center"},"Definition"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"pci"),(0,a.kt)("td",{parentName:"tr",align:"center"},"Physical Cell Identifier")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"rnti"),(0,a.kt)("td",{parentName:"tr",align:"center"},"Radio Network Temporary Identifier (UE identifier)")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"cqi"),(0,a.kt)("td",{parentName:"tr",align:"center"},"Channel Quality Indicator reported by the UE (1-15)")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"mcs"),(0,a.kt)("td",{parentName:"tr",align:"center"},"Modulation and coding scheme (0-28)")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"}
1,"brate"),(0,a.kt)("td",{parentName:"tr",align:"center"},"Bitrate (bits/sec)")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"ok"),(0,a.kt)("td",{parentName:"tr",align:"center"},"Number of packets successfully sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"nok"),(0,a.kt)("td",{parentName:"tr",align:"center"},"Number of packets dropped")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"(%)"),(0,a.kt)("td",{parentName:"tr",align:"center"},"% of packets dropped")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"pusch"),(0,a.kt)("td",{parentName:"tr",align:"center"},"PUSCH SINR (Signal-to-Interference-plus-Noise Ratio)")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},"bsr"),(0,a.kt)("td",{parentName:"tr",align:"center"},"Buffer Status Report - data waiting to be transmitted as reported by the UE (bytes)")))),(0,a.kt)("p",null,"More to come on enhancing the speed of the connection."))}u.isMDXComponent=!0},6172:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/5Gconsole-7153ed77b4b8985a670baf451593ebca.png"},6319:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/5Gsetup-80d4674ab7e5066fa4105b136ede35b5.jpg"},6312:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/srsRAN-136722cdf31fc2b9c6aff98fe4f7ee49.png"}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.