Wireless-Innovation-Forum / 6-GHz-AFC

This repository contains code and data for testing the compliance of Automated Frequency Coordinator (AFC) software. The AFC is defined by the FCC in proceeding 18-295 on Unlicensed Use of the 6 GHz Band. This repository contains procedures, documentation, and tests for such software, and for the devices authorized by it. To contribute, please first read the CONTRIBUTING file in the repository for instructions.
14 stars 3 forks source link

AFCS.SIP.4 Canadian Border Receivers protection - Clarification #58

Closed alexcpn closed 2 months ago

alexcpn commented 4 months ago

Hi, WINNF-TS-1014v1.6 mentions that

9.3: International Border Protection

R0-AIP-06
An AFC System must [shall] implement the terms of international agreements with Mexico and Canada. (15.407(k)(14))

R2-AIP-42
For the purpose of Canadian Border Protection, regardless of the antenna height or the morphology of the Canadian FS receiver, the AFC System operating in the United States shall not apply any clutter at the FS Receiver, in calculating the path loss.

From the data got from https://github.com/Wi-FiTestSuite/6GHz-AFC/tree/main/ULS_database/ISED and the specification here

DBS-06 — Automated Frequency Coordination (AFC) System Specifications for the 6 GHz (5925-6875 MHz) Frequency Band

Only the following details of the receiver are present in the 'StationData Extract' - https://www.ic.gc.ca/engineering/AFC_Data_Glossary.pdf

1 Service 
2 Subservice 
3 Authorization Number 
4 Licensee Name 
5 Province of Operation
6 Call Sign
7 Station Location
8 ITU Class of Station
9 Latitude (WGS84) 
10 Longitude (WGS84) 
11 Ground Elevation [m] 
12 Structure Height [m] 
13 Antenna Height [m] 
14 Azimuth [deg.] 
15 Elevation Angle [deg.]
16 Analog/Digital
17 Designation of Emission 
18 Occupied Bandwidth [kHz] 
19 Frequency [MHz] 
20 Antenna Gain [dBi] 
21 Total Loss [dB]

However Transmitter details are not given here on in any related table connected to this receiver. So how do we find Effective Gain (RPE calculation). The transmitter location as well as height is needed for the calculation for this. Or should this step be skipped

alexcpn commented 4 months ago

@AEgbert is there any other guidline on how to parse or use the Candian data. There is this SMS-Snapshot-2023-01-09.zip at WINNF Wi-FiTestSuite, but no other details on how to relate or handle this data and the missing parts like Transmit location

alexcpn commented 4 months ago

The Canadian data has the following fields ( this is a SIP.4 log output)

[INFO] ********************************************************************************
[INFO] Going to process Canadian 62/2199 UUID = 010019419-002 call_sign = CFI696
[INFO] accesspoint_loc =(48.361254, -119.585033) receiver_loc=(49.362778, -121.58528)
[INFO] Processing UUID = 010019419-002 call_sign = 'CFI696' R to AP Dist =184230.5808 m, CF =5945.2 Mhz
[INFO] Uncertanity Points Length=450
[INFO] accesspoint_elev=256.42321636527777
[INFO] receiver_clutterloss=0 for receiver_nlcd_code=0
[INFO] Maximum transmit_power PSD =232.49201836475504 dBm/MHz at (48.36260146676249, -119.58300500126141) for Minimum loss 341.29201836475505 receiver_clutterloss=0 ap_clutterloss=0
[INFO] GRx_Effective=-4.200000000000001 GAZ_Disc=-42 class_string=2.d rpe_table=-42 gamma=96.85430011125602 rpe_p=-42 rpe_d=None
[INFO] uuid: 010019419-002
[INFO] call_sign: CFI696
[INFO] receiver_loc: (49.362778, -121.58528)
[INFO] r_height_to_center_raat: 89.0
[INFO] bandwidth: 30.0
[INFO] frequency_assigned: 5945.2
[INFO] center_freq: 5945.2
[INFO] frequency_range: (5930.2, 5960.2)
[INFO] transmitter_make: Andrew, Div of CommScope
[INFO] transmitter_model: HPX8-58W (L6)
[INFO] r_azimuth: 223.3
[INFO] r_diameter_m: 2.44
[INFO] Elevation_Angle_deg: 0.749
[INFO] r_gain: 40.8
[INFO] receiver_elev: 36.41520709358156
[INFO] is_canadian_receiver: True
[INFO] receiver_to_ap_dist_m: 184230.5808
[INFO] accesspoint_loc: (48.361254, -119.585033)
[INFO] accesspoint_ht_m: 18.0
[INFO] accesspoint_vtunc_m: 2
[INFO] accesspoint_hzunc_x: 150
[INFO] accesspoint_hzunc_y: 150
[INFO] ap_nlcd_code: 21.75
[INFO] accesspoint_elev: 256.42321636527777
[INFO] ********************************************************************************

Here since the Transmitter location or how to relate to the Tranmsitter from the Receiver like in ULS with Path is not documented and known, while calculating the RPE and Effective Gain, I am using the following

 ThetaAZ_Bearing_To_Eval = calculate_bearing_angle(receiver_loc,access_point_loc) #degree ---> OKay
 θEL_Disc = math.radians(Elevation_Angle_deg) #  assuming that I can use the Elevation_Angle_deg here 
 log.debug(f"Angle 2: Elevation angle: R-T The receive antenna boresight elevation angle (from transmmitter) θEL_Disc= {θEL_Disc} degrees")

and the rest of the calculation is based on this which gives the following effective Gain - GRx_Effective=-4.200000000000001.

Not sure if this is correct

Note that for SIP4. for AP (48.13111111111111, -119.68333333333334) with a 200KM distance I am getting 43 Canadian Receivers

With both Canadian and US receivers my results are like below

[INFO] Expected Frequency
[INFO] 5925-6108,upperBound:23.0 nominalValue:23.0
[INFO] 6108-6119,upperBound:22.9 nominalValue:20.9
[INFO] 6119-6425,upperBound:23.0 nominalValue:23.0
[INFO] 6525-6650,upperBound:23.0 nominalValue:23.0
[INFO] 6676-6875,upperBound:23.0 nominalValue:23.0
[INFO] Calculated Frequency
[INFO] 5925.0-5930.025  psd: 23.0
[INFO] 5930.025-5940.2  psd: 23.0
[INFO] 5940.2-5950.2  psd: 10.820525549180559
[INFO] 5950.2-5959.85  psd: 23.0
[INFO] 5959.85-5989.85  psd: 2.7186672112266876
[INFO] 5989.85-6048.8  psd: 23.0
[INFO] 6048.8-6078.45  psd: 5.13328404830618
[INFO] 6078.45-6108.22  psd: 2.9747545663838935
[INFO] 6108.22-6118.22  psd: -6.1951102358090395
[INFO] 6118.22-6167.925  psd: 23.0
[INFO] 6167.925-6182.065  psd: 23.0
[INFO] 6182.065-6211.89  psd: 23.0
[INFO] 6211.89-6241.89  psd: 18.63747800542336
[INFO] 6241.89-6300.84  psd: 19.254346201871982
[INFO] 6300.84-6330.84  psd: -2.209301261517183
[INFO] 6330.84-6360.49  psd: 18.801357409292024
[INFO] 6360.49-6419.965  psd: 23.0
[INFO] 6419.965-6420.0  psd: 23.0
[INFO] 6420.0-6422.5  psd: 23.0
[INFO] 6422.5-6425.0  psd: 23.0
[INFO] 6525.0-6570.0  psd: 23.0
[INFO] 6570.0-6580.0  psd: 23.0
[INFO] 6580.0-6650.0  psd: 23.0
[INFO] 6650.0-6676  psd: 0
[INFO] 6676-6690.0  psd: 23.0
[INFO] 6690.0-6700.0  psd: 19.057907136926985
[INFO] 6700.0-6870.0  psd: 23.0
[INFO] 6870.0-6875.0  psd: 23.0
[WARNING] gc=131 cn=1,freq_range=(5945.0, 5965.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=15.73 diff=20.27
[WARNING] gc=131 cn=5,freq_range=(5965.0, 5985.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=15.73 diff=20.27
[WARNING] gc=131 cn=9,freq_range=(5985.0, 6005.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=15.73 diff=20.27
[WARNING] gc=131 cn=21,freq_range=(6045.0, 6065.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=18.14 diff=17.86
[WARNING] gc=131 cn=25,freq_range=(6065.0, 6085.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=15.99 diff=20.01
[WARNING] gc=131 cn=29,freq_range=(6085.0, 6105.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=15.99 diff=20.01
[WARNING] gc=131 cn=33,freq_range=(6105.0, 6125.0),expected_eirp={'nominalValue': 33.9, 'upperBound': 35.9} calc_eirp=6.82 diff=27.08
[WARNING] gc=131 cn=37,freq_range=(6125.0, 6145.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=28.1 diff=7.90
[WARNING] gc=131 cn=53,freq_range=(6205.0, 6225.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=31.65 diff=4.35
[WARNING] gc=131 cn=57,freq_range=(6225.0, 6245.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=31.65 diff=4.35
[WARNING] gc=131 cn=61,freq_range=(6245.0, 6265.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=32.26 diff=3.74
[WARNING] gc=131 cn=65,freq_range=(6265.0, 6285.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=32.26 diff=3.74
[WARNING] gc=131 cn=69,freq_range=(6285.0, 6305.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=10.8 diff=25.20
[WARNING] gc=131 cn=73,freq_range=(6305.0, 6325.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=10.8 diff=25.20
[WARNING] gc=131 cn=77,freq_range=(6325.0, 6345.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=10.8 diff=25.20
[WARNING] gc=131 cn=81,freq_range=(6345.0, 6365.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=31.81 diff=4.19
[WARNING] gc=131 cn=149,freq_range=(6685.0, 6705.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=32.07 diff=3.93
[WARNING] gc=132 cn=3,freq_range=(5945.0, 5985.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=18.74 diff=17.26
[WARNING] gc=132 cn=11,freq_range=(5985.0, 6025.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=18.74 diff=17.26
[WARNING] gc=132 cn=19,freq_range=(6025.0, 6065.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=21.15 diff=14.85
[WARNING] gc=132 cn=27,freq_range=(6065.0, 6105.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=19.0 diff=17.00
[WARNING] gc=132 cn=35,freq_range=(6105.0, 6145.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=9.83 diff=26.17
[WARNING] gc=132 cn=67,freq_range=(6265.0, 6305.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=13.81 diff=22.19
[WARNING] gc=132 cn=75,freq_range=(6305.0, 6345.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=13.81 diff=22.19
[WARNING] gc=133 cn=7,freq_range=(5945.0, 6025.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=21.75 diff=14.25
[WARNING] gc=133 cn=23,freq_range=(6025.0, 6105.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=22.01 diff=13.99
[WARNING] gc=133 cn=39,freq_range=(6105.0, 6185.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=12.84 diff=23.16
[WARNING] gc=133 cn=71,freq_range=(6265.0, 6345.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=16.82 diff=19.18
[WARNING] gc=134 cn=15,freq_range=(5945.0, 6105.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=24.76 diff=11.24
[WARNING] gc=134 cn=47,freq_range=(6105.0, 6265.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=15.85 diff=20.15
[WARNING] gc=134 cn=79,freq_range=(6265.0, 6425.0),expected_eirp={'nominalValue': 36.0, 'upperBound': 36.0} calc_eirp=19.83 diff=16.17
[INFO] Time in Milliseconds 0:17:46.119188, processed_count=1016100

Logs attached out_AFCS.SIP.4_2024-06-13 11:52:08.976811.log

alexcpn commented 2 months ago

To make this easier; here are the relevant extracts from the logs where there are deviations from the expected. Kindly ping here if any details need to be put in any format to check this issue

# Incumbent Frequency < 23 dBm
Where P = Path number
T = Transmitter
L = Location number
A = Antenna number
R = Receiver

(5940.2, 5950.2),10.820525549180559),
UUID = 1044902 call_sign = WPNL270 P[1],T[L=1,A=1],R[L=2,A=1]

(5959.85, 5989.85),2.7186672112266876),
UUID = 3377181 call_sign = WQPG658 P[2],T[L=1,A=2],R[L=3,A=1]

(6048.8, 6078.8),5.13328404830618),
UUID = 3029398 call_sign = WQJB565 P[1],T[L=1,A=1],R[L=2,A=1]

(6078.45, 6108.45),2.9747545663838935),
UUID = 3377181 call_sign = WQPG658 P[2],T[L=1,A=2],R[L=3,A=1]

(6108.22, 6118.22),-6.1951102358090395),
UUID = 980457 call_sign = WHC700 P[3],T[L=1,A=3],R[L=3,A=1]

(6211.89, 6241.89),18.63747800542336),
UUID = 1044900 call_sign = WPNL268 P[2],T[L=1,A=2],R[L=3,A=1]

(6241.365, 6301.365),19.254346201871982),
UUID = 4133858 call_sign = WRDA785 P[1],T[L=1,A=1],R[L=2,A=1]

(6300.84, 6330.84),-2.209301261517183),
UUID = 2836444 call_sign = WQFM596 P[4],T[L=1,A=4],R[L=5,A=1]

(6330.49, 6360.49),18.801357409292024),
UUID = 1044900 call_sign = WPNL268 P[2],T[L=1,A=2],R[L=3,A=1]

(6690.0, 6700.0),19.057907136926985),
UUID = 3816048 call_sign = WQXS488 P[1],T[L=1,A=1],R[L=2,A=1]
alexcpn commented 2 months ago

Thanks to the SIP0004report.xlsx from Tom Willis at AT&T Labs. There was a bug in my clutter loss calculation. In my code, the check for antenna ht lower than 6 meters and setting it to zero I was applying for AP also inadvertently though a flow flag error. Corrected. It is matching now

[INFO] Expected Frequency
[INFO] 5925-6108,upperBound:23.0 nominalValue:23.0
[INFO] 6108-6119,upperBound:22.9 nominalValue:20.9
[INFO] 6119-6425,upperBound:23.0 nominalValue:23.0
[INFO] 6525-6650,upperBound:23.0 nominalValue:23.0
[INFO] 6676-6875,upperBound:23.0 nominalValue:23.0
[INFO] Calculated Frequency
[INFO] 5925.0-5930.025  psd: 23.0
[INFO] 5930.025-6108.22  psd: 23.0
[INFO] 6108.22-6118.22  psd: 22.609315267504257
[INFO] 6118.22-6167.925  psd: 23.0
[INFO] 6167.925-6182.065  psd: 23.0
[INFO] 6182.065-6419.965  psd: 23.0
[INFO] 6419.965-6420.0  psd: 23.0
[INFO] 6420.0-6422.5  psd: 23.0
[INFO] 6422.5-6425.0  psd: 23.0
[INFO] 6525.0-6570.0  psd: 23.0
[INFO] 6570.0-6580.0  psd: 23.0
[INFO] 6580.0-6650.0  psd: 23.0
[INFO] 6650.0-6676  psd: 0
[INFO] 6676-6870.0  psd: 23.0
[INFO] 6870.0-6875.0  psd: 23.0
[INFO] Time in Milliseconds 0:01:25.975681, processed_count=1004400

image