Qatar Airways flight QTR901 registration A7-BEO departed Perth International Airport on runway 21 on 1st November 2022 at 15:06:50 UTC (23:06:50 AWST local time). There was good weather in the Perth area that evening with a high pressure zone and a surface pressure of 1023 hPa. There was a light north-westerly wind of 6 knots from 125°T.
The aircraft was picked up by ADS-B at 15:06:50 UTC showing a position of 31.9572°S 115.9600°E on a track of 195°T with a ground speed of 188 knots and an altitude of 50 feet just above the southern end of the runway 21. The aircraft continued to be tracked by ADS-B until 15:54:00 UTC, at which point the aircraft was out of range of any ADS-B receiver at a position of 29.2601°S 110.4681°E, which is 225 nmi west of Geraldton Airport, Australia out over the Indian Ocean. The aircraft was then on a track of 302°T with a ground speed of 466 knots at an altitude of 30,000 feet.
For 7 out of the next 10 hours the aircraft is out of range of any ADS-B receivers. After reaching Sri Lanka at 21:32 UTC the aircraft is back within range of ADS-B receivers for approximately 1.5 hours. Similarly when reaching the vicinity of the Arabian peninsular the aircraft’s position is again known from ADS-B data for a further 1.5 hours. This particular flight took a more northerly route due to the strong jet stream and flew over the Cocos Islands where it was also picked up by an ADS-B receiver for a short time around 18:36 UTC.
This case study examines the use of radio waves from the Weak Signal Propagation Reporter (WSPR) and the historic database called WSPRnet. WSPR data can be used as a multi-static passive radar system to detect and track aircraft.
We demonstrate that it is possible to detect and track a Boeing 777 across the Indian Ocean. Our methodology is applicable to the case of the missing aircraft MH370, which was a similar aircraft type namely a Boeing 777-200ER. Flight MH370 was diverted to the Indian Ocean, where it crashed after fuel exhaustion on 8th March 2014 at some point after the last satellite signal was received at 00:19:37 UTC. At the time of writing of this case study, MH370 still has not been found despite extensive surface and underwater searches.
The case study can be downloaded here (230 pages, 105 MB).
@All,
Geoffrey Thomas has reported on the latest case study in the article linked below:
https://www.airlineratings.com/news/mh370-update-new-study-verifies-tracking/
A new comprehensive study has been published by Richard Godfrey, Dr. Hannes Coetzee (ZS6BZP) and Prof. Simon Maskell that proves conclusively that WSPRnet technology can accurately track the missing Boeing 777.
Godfrey et. al. says that “in previous case studies we have successfully detected and tracked both large aircraft such as Emirates flight EK421, a Boeing 777-300ER and small aircraft such as a Diamond DA40, a Cessna 551 Citation II/SP and a helicopter Alouette II SE313B. In this case study we analyse the flight of Qatar Airways QTR901, a Boeing 777-300ER, which flew from Perth, Australia to Doha, Qatar across the Indian Ocean on Tuesday 1st November 2022.”
@All,
Detecting and tracking aircraft or missiles with WSPR radio signals is one thing.
Detecting and tracking people with WiFi signals is another.
https://www.instagram.com/reel/CuCkBreKya8/?igshid=MTI1ZDU5ODQ3Yw==
@All,
A new article by Geoffrey Thomas at airlineratings.com titled “AI Technology Supports WSPR MH370 Tracking”
https://www.airlineratings.com/news/ai-technology-supports-wspr-mh370-tracking/
“Suddenly AI has turned every Wi-Fi router into a camera that can work in the dark, specially tuned for tracking living beings.”
Radio signals can be used from the local level (WiFi) to the global level (WSPRnet) to track anything from human beings to aircraft, in fact, anything that disturbs radio waves propagating.
Could you upload a table listing the ”second method” nulls in this QTR901 study? They are not listed in the study. And if you do that, could you also upload a table-form list of the 244 observations like was done with the OE-FGR study?
In figure 22 (page 27) it says ”244 observations”, but this can’t be correct? There’s this list of about 100 ”second method” nulls that have to be added to the 244 in order to have the 0.57 AUC result (for SNR). Without them, it should be below 0.50 if I’m not mistaken.
[My earlier comment disappeared and I get a duplicate error when I try to repost this, so I apologize for a potential duplicate (the other comment can be removed in that case)]
@Puuhöylä,
Welcome to the blog!
My apologies that you seem to be having difficulties with earlier comments disappearing and getting a duplicate error when reposting. I actually received both comments without problem. Unfortunately due to hundreds of daily hacker attacks on my website and people trying to sell their products or advertise their services, all comments go into a moderating queue at first.
The 244 observations are listed in Tables 14, 15, 16 and 17.
You claim that there aren’t 244 observations, but here is a link to the source spreadsheet in Excel format for the Tables 14, 15, 16 and 17. As you will see there are 244 rows in the spreadsheet, so I am mystified by your conclusion.
https://www.dropbox.com/scl/fi/8yeids90yajl5m3jkj7pf/Results-Table-QTR901-Case-Study-Published.xlsx?rlkey=qan3dfqptk0m1bzm0pn0ra9jw&dl=0
If you load the column marked “ROC Signal Deviation” into a Matlab data file, then the result will be:
https://www.dropbox.com/scl/fi/3yc06k8l78vvl7h4il0en/SD_Test.mat?rlkey=2ye6pggtii2mxqydeti84yqsr&dl=0
If you load the column marked “”ROC Aircraft Present < 1 nmi"" into a Matlab data file, then the result will be: https://www.dropbox.com/scl/fi/cxdrh03z1tpvtoup4vqma/Aircraft_Test.mat?rlkey=zvkfzmyhw53fc1ms3iuia7w8t&dl=0
If you run a Matlab script as follows:
load SD_Test.mat
load Aircraft_Test.mat
observations = length(SD_Test);
for index = 1:observations
temp = Aircraft_Test(index);
if temp == 0
resp(index)=false;
else
resp(index)=true;
end
end
pred = SD_Test(1:observations);
[X,Y,T,AUC] = perfcurve(resp,pred,’true’,’NBoot’,1000,’XVals’,[0:0.01:1]);
plot(X(:,1),Y(:,1));
errorbar(X(:,1),Y(:,1),Y(:,1)-Y(:,2),Y(:,3)-Y(:,1));
hold on;
for i=1:floor(length(T)/10):length(T)
text(X(i)+0.01,Y(i),sprintf(‘%.2f’,T(i)));
plot(X(i),Y(i),’rx’);
end
% text(0.4135,0.8200,’ 0.82′);
% plot(0.4200,0.6000,’ro’);
h = line;
h.LineStyle = ‘–‘;
h.Color = ‘r’;
legend_observations = num2str(observations);
legend_AUC = num2str(round(AUC(1) * 100,0));
legend_str = strcat(legend_observations,” observations: ROC Area Under the Curve “,legend_AUC,”%”);
legend(legend_str, ‘Location’,’south’);
xlabel(‘False positive rate’);
ylabel(‘True positive rate’);
titstring1=[‘ ‘];
titstring2=[‘Receiver Operating Characteristic (ROC) curve ‘];
titstring3=[‘(with point wise 95% confidence intervals and annotated with threshold values) ‘];
titstring4=[‘ ‘];
title({titstring1;titstring2;titstring3;titstring4},’fontsize’,12,’fontweight’,’bold’);
You can download the Matlab script here:
https://www.dropbox.com/scl/fi/78q9s8vmoqtvhan6ponhv/ROC.m?rlkey=3jsqm01wwqfy3rh11e7zsznyj&dl=0
Running the script will give you the following result:
https://www.dropbox.com/scl/fi/yndsujycvayx6ab28pp7d/ROC-244-Observations-with-confidence-intervals.png?rlkey=7y4iy8yntn51er8dp4ujs4a1v&dl=0
You will find 244 observations and an area under the curve of 58%.
It’s clear to me that this indicates that WSPR does perform better than chance, but that it is a noisy sensor.
The plot of the True Positive Rate against the False Positive Rate is a standard test. It is a test of sensitivity and specificity. Sensitivity (true positive rate) refers to the probability of a positive test, conditioned on truly being positive. Specificity (true negative rate) refers to the probability of a negative test, conditioned on truly being negative.
In other words WSPR can detect an aircraft when it is there and does not detect an aircraft when it is not there.
We have since improved the WSPR detection and tracking algorithms. A more recent example shows an area under the curve of 67%:
https://www.dropbox.com/scl/fi/xk0ycgjekma2k3zad1izc/Receiver-Operating-Charcteristic-ROC-171-Observations-Area-Under-the-Curve-67.png?rlkey=zia3v1qxo2ozifvv390bvomgg&dl=0
Prof. Simon Maskell responded “if the ROC curve is on the y=x line, that implies that the presence of the aircraft has no impact on the output of the algorithm and, conversely, ANY departure from y=x implies that the presence of an aircraft is having an impact.”
Prof. Simon Maskell is developing a variant of the algorithm developed by DSTG and presented in their paper entitled “Bayesian Methods in the Search for MH370” and dated 30th November 2015, but modified to incorporate the WSPR data. The plan is that the paper will be independently reviewed and that the results will be presented in a separate paper in due course.
WSPR has been validated against over 50 flights, including MH370 and other flights with the same aircraft as 9M-MRO. Prof. Simon Maskell is currently validating WSPR against around 1,000 Boeing 777 flights with a processing chain that produces a ROC curve as the output.
@Richard Godfrey
Thank you for providing the table. I now notice that the source of confusion was the fact that the ”second method” nulls appear to be included in the list of 244 observations but are not labeled as ”Null” like the other 35 nulls are. So the problem was that if these 100 nulls are mistakenly included as positives when calculating the AUC, the result becomes below 0.50. And hence the need for the extra set of negatives (which I thought were missing) in order to reach the 0.57. But I do get the 0.57 result for SNR now when the second method nulls are changed to negatives.
@Puuhöylä,
I am glad that you could reproduce the results for SNR anomalies in the QTR901 case study.
I am thinking of doing a ROC curve for the THY161 flight as well.