3,715
edits
RyanThaDude1 (talk | contribs) (Add alternate explanation) |
RyanThaDude1 (talk | contribs) (Alternate is now primary, primary is deprecated) |
||
Line 5: | Line 5: | ||
''First and foremost this solution provided may not be 100% correct. The gNB may not be official but it does solve all of the major problems that is preventing normal usage.'' | ''First and foremost this solution provided may not be 100% correct. The gNB may not be official but it does solve all of the major problems that is preventing normal usage.'' | ||
<code>''gNB'' = floor(''cellID'' / 2<sup>12</sup>)_floor(''cellID'' mod 2<sup>12</sup>) / 21)</code> | |||
<code>''cellNum'' = (''cellID'' mod 2<sup>12</sup>) mod 21</code> | |||
==Background== | ==Background== | ||
The definition of the gNB is beyond the scope of this document, but simply, it's a 36-bit number. Part of the binary number is the gNB and the rest is the cell number. For example, T-Mobile uses a 24-bit gNB, which gives it a 12-bit cell number, or a potential of 4096 cells! The method that Cellmapper is calculating the gNB is a 32-bit gNB and a 4-bit cell number: | The definition of the gNB is beyond the scope of this document, but simply, it's a 36-bit number. Part of the binary number is the gNB and the rest is the cell number. For example, T-Mobile uses a 24-bit gNB, which gives it a 12-bit cell number, or a potential of 4096 cells! The method that Cellmapper is calculating the gNB is a 32-bit gNB and a 4-bit cell number: <code>''gNB'' = floor(''cellID'' / 2<sup>4</sup>)</code> and its cell number <code>''cellNum'' = ''cellID'' mod 2<sup>4</sup></code>. This gives 16 cells per gNB. At this point we already know this isn't correct. | ||
After sifting through a lot of the data available on Cellmapper, a pattern was found which gave 21 cells per site. If we're slicing a 36-bit you realize you can't use 21. So we have to look for another way. | After sifting through a lot of the data available on Cellmapper, a pattern was found which gave 21 cells per site. If we're slicing a 36-bit you realize you can't use 21. So we have to look for another way. | ||
Line 18: | Line 16: | ||
This [https://www.reddit.com/r/cellmapper/comments/109p22x/all_gnb_starting_with_the_number_1_on_5g_sa/j415pmn/ post] on Reddit was found, stating that ''"Just got confirmation back that DISH is using 24/12 bit structure for their gNBs."'' If this is true, this would produce 4096 cells, way more than the 21 needed for DISH. We need to dig deeper. | This [https://www.reddit.com/r/cellmapper/comments/109p22x/all_gnb_starting_with_the_number_1_on_5g_sa/j415pmn/ post] on Reddit was found, stating that ''"Just got confirmation back that DISH is using 24/12 bit structure for their gNBs."'' If this is true, this would produce 4096 cells, way more than the 21 needed for DISH. We need to dig deeper. | ||
What we found out is DISH is indeed using 24/12 format, but going a step further. A group of sites in an area can have the same gNB. To break it down even further, the number 21 comes into play. Take a cell ID, divide it by 2<sup>12</sup>, or 4096. This gives the base gNB. Now we append a secondary number with a separator with <code>floor(''cellID'' mod(2<sup>12</sup>) / 21)</code>, such as a dash or underscore. | |||
Here's a quick example for a cell ID of 1011724336, which is a site at 38.217800, -85.625314 Louisville, KY. | |||
<pre> | |||
gNB = floor(cellID / 2^12)_floor(cellID mod 2^12) / 21) | |||
gNB = floor(1011724336 / 4096)_floor(1011724336 mod 4096 / 21 | |||
gNB = 247003_floor(48 / 21) | |||
gNB = 247003_2 | |||
</pre> | |||
<pre> | |||
cellNum = (cellID mod 2^12) mod 21 | |||
cellNum = (1011724336 mod 4096) mod 21 | |||
cellNum = 48 mod 21 | |||
cellNum = 48 mod 21 | |||
cellNum = 6 | |||
</pre> | |||
Therefore, a DISH Wireless cell ID of 1011724336 belongs to a gNB of 247003_2 and it's cell number is 6. | |||
==History== | |||
Previously it was thought that due to many using 32/4 that the gNBs should be similar numbers, so in order to create a similar number, a more complex formula was used. Basically, the primary gNB was multiplied by 256 and the secondary was then added. Using the example above, 247003 was the primary, so we're multiply it by 256 which the result will be 63232768. Add the 2 and we get 63232770. Cellmapper's 32/4 calculation gives us 63232771, which is very close. Although this could still be a viable option, its usage has been deprecated due to its complexity. | |||
==Bands== | |||
Using the formula posted above, you'll find that the bands all match these cell numbers: | Using the formula posted above, you'll find that the bands all match these cell numbers: | ||
Line 72: | Line 92: | ||
An easy way to see how this works is to try it for yourself. The best and easiest way is to use a spreadsheet such as Excel or Google Sheets. | An easy way to see how this works is to try it for yourself. The best and easiest way is to use a spreadsheet such as Excel or Google Sheets. | ||
'''gNB''': <code>= | '''gNB''': <code>=FLOOR.MATH(A1/2^12)&"_"&FLOOR.MATH(MOD(A1,2^12)/21)</code>, where A1 is the full Cell Identifier, in decimal. | ||
'''cellNumber''': <code>=MOD(MOD(A1,2^12),21)</code> | '''cellNumber''': <code>=MOD(MOD(A1,2^12),21)</code> |
edits