Thursday, 30 July 2026

AUSALERT: THE TEST THAT LIED

AusAlert: The Test That Lied to You

AUSALERT: THE TEST THAT LIED

Or, how the Australian government convinced millions their phones were broken when the real problem was the test itself

On July 27, 2026, the Australian government sent a "test" emergency alert to every phone in the country. Millions got it. Millions didn't. The official line? "Your phone is too old." "Update your software." Bullshit. I spent the last week knee-deep in Android source code, and I can tell you exactly what happened — and it has nothing to do with your phone.

Let me be clear up front: Australia has been sending emergency alerts to phones since 2009. Bushfires, floods, COVID lockdowns — all delivered via SMS from +61 444 444 444. The carriers know how to do this. The towers are already configured. The modems in your phone have been capable of receiving cell broadcast messages since the GSM era. The infrastructure was not the problem.

The problem was the test message itself.

01. The Lie

NEMA — the National Emergency Management Agency — put out a statement after the test. They said some devices "might behave differently." They listed the usual suspects: old phones, no signal, airplane mode. But then they slipped. They admitted something that should have been the headline:

"Depending on your device, you may get a test alert with the heading 'Presidential Alert' or 'Extreme Threat Alert'. This is still a valid AusAlert test." — AusAlert.gov.au, 27 July 2026

Read that again. Some people saw "Presidential Alert." Others saw "AusAlert Test." Same test. Same towers. Same broadcast. Different message class. And that difference is everything.

Because in the Android firmware — the actual code running on your Samsung, your Xiaomi, your OPPO — there is a gatekeeper. A single method called isChannelEnabled() that decides whether to show you the alert or silently throw it in the trash. And that method treats "test" messages and "emergency" messages as entirely different species.

02. The Kill Switch

I pulled the Android Open Source Project code. The real stuff. Not a blog summary. The actual Java files that ship on every Android phone. Here's what I found.

packages/apps/CellBroadcastReceiver/.../CellBroadcastAlertService.java :: isChannelEnabled()
// === CMAS PRESIDENTIAL ALERT PATH === if (resourcesKey == R.array.cmas_presidential_alerts_channels_range_strings) { return true; // ALWAYS enabled — no toggle, no check } // === REQUIRED MONTHLY TEST === if (resourcesKey == R.array.required_monthly_test_range_strings) { return emergencyAlertEnabled && CellBroadcastSettings.isTestAlertsToggleVisible(getApplicationContext()) && checkAlertConfigEnabled( subId, CellBroadcastSettings.KEY_ENABLE_TEST_ALERTS, false); }

See that? Presidential Alert: return true; No questions asked. No user settings checked. No OEM preferences consulted. It just shows.

Test Alert: Three separate conditions must all be true. The master toggle must be on. The OEM must not have hidden the test toggle in their settings menu. And the user must not have disabled test alerts. If any of those is false, the method returns false, and your phone logs a quiet little note: "ignoring alert of type X by user preference".

You never see it. You never know it happened. The message arrived at your modem, passed through the kernel, reached the Android telephony service, and then — poof — deleted by a setting you didn't know existed, buried three menus deep, possibly hidden by your phone manufacturer entirely.

NOT A BUG

This is not a bug. This is by design. The 3GPP standard — the global cellular specification — deliberately separates test messages from emergency messages so users can opt out of monthly test spam without opting out of life-safety alerts. It's a reasonable design. But it means testing with a test message does not test the emergency path. And AusAlert's "national test" tested the wrong path.

03. The OEM Problem

Here's where it gets worse. Even if you wanted to enable test alerts, your phone manufacturer might have made that impossible.

ManufacturerWhat They Did
Samsung (OneUI) Buried the toggle under Settings > Notifications > Advanced Settings > Wireless Emergency Alerts. Some models need carrier profile updates to even see it.
Xiaomi / Redmi (MIUI) Ships with test alerts DISABLED BY DEFAULT. Toggle hidden under Settings > Passwords & Security > Emergency Alerts. Most users never find it.
OPPO / Realme (ColorOS) May not expose the toggle at all. The code still checks it, but if it's not in the UI, you can't change it from the default false.
Budget / Android Go Outdated modules, missing carrier profiles, no AusAlert identifiers in the whitelist at all.

So when AusAlert sent the test as a test-class message — 0x111C or 0x112E — every Xiaomi phone in the country silently dropped it. Every OPPO phone with the hidden toggle dropped it. Every user who once disabled test alerts to stop the monthly spam dropped it. And none of them knew.

Meanwhile, the person sitting next to them with an iPhone or a Samsung that received it as a "Presidential Alert" (0x1112) got the full screaming treatment. Same room. Same tower. Same broadcast. Two completely different outcomes.

04. The False Negative

This is the part that makes me angry. The government told people their phones were broken. "Too old." "Not updated." "Doesn't support AusAlert." And people believed them. I saw threads on Reddit, Facebook, Whirlpool — people planning to buy new phones because they "failed" the test.

Your phone did not fail. The test failed your phone.

Why you didn't get itWould a real emergency work?
Phone off / no signalN/A
Pre-Android 8 deviceNo — no CB module
Grey market import, wrong carrier profileNo — wrong config
Test sent as 0x111C, you disabled test alertsYES — Presidential would blast through
Xiaomi/OPPO shipped with test alerts off by defaultYES — Presidential would blast through

Two of those five rows — the two biggest ones, the ones affecting millions of Android users — are false negatives. The test told them they weren't protected. They are. The emergency path was never tested. Only the test path was. And the test path is deliberately weaker by design.

05. What Should Have Happened

If NEMA actually wanted to test whether the emergency system works — whether the country is protected in a bushfire, a flood, a terrorist attack — they should have sent the test as a Presidential Alert. Message identifier 0x1112. The one that cannot be disabled. The one that overrides Do Not Disturb. The one that screams at maximum volume.

Yes, every phone in the country would have screamed. That's the point. A test that doesn't test the actual emergency path is not a test. It's theater.

"Yes, this means every phone in the country will scream during the test. That is the point." — What NEMA should have said

Instead, they sent a polite little test message that half the Android ecosystem is configured to ignore. Then they blamed the phones. Then they let people think they need to upgrade. It's either incompetence or dishonesty, and I'm not sure which is worse.

06. The Code Doesn't Lie

I want to show you one more thing. The complete isChannelEnabled() method, annotated. This is the smoking gun. This is the code that decided whether your phone showed the alert or pretended it never happened.

CellBroadcastAlertService.java :: isChannelEnabled() — AOSP main branch
private boolean isChannelEnabled(SmsCbMessage message) { // Master toggle check boolean emergencyAlertEnabled = checkAlertConfigEnabled( subId, KEY_ENABLE_ALERTS_MASTER_TOGGLE, true); // === PRESIDENTIAL ALERT === if (resourcesKey == R.array.cmas_presidential_alerts_channels_range_strings) { return true; // ALWAYS SHOWS. NO CHECKS. NO TOGGLES. } // === EXTREME THREAT === if (resourcesKey == R.array.cmas_alert_extreme_channels_range_strings) { return emergencyAlertEnabled && checkAlertConfigEnabled( subId, KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS, true); } // === TEST MESSAGE (0x111C) === if (resourcesKey == R.array.required_monthly_test_range_strings) { return emergencyAlertEnabled && isTestAlertsToggleVisible(context) // OEM may hide this && checkAlertConfigEnabled( subId, KEY_ENABLE_TEST_ALERTS, false); // DEFAULTS TO FALSE } // If we get here and it's a test, it's GONE. Log.e(TAG, "ignoring alert of type " + channel + " by user preference"); return false; }

Look at that last line. return false;. The message is discarded. Silently. No notification. No vibration. No log to the user. Just a system log entry that no one reads unless they're specifically looking for it.

I found this by searching the AOSP repository. Anyone can do it. NEMA has engineers. Google has engineers. They know this code exists. They know how it works. And they still sent a test message that triggers the return false; path for millions of devices.

07. What Now

Here's what should happen next:

1. NEMA must publicly clarify that missing the test does not mean missing a real emergency. The current messaging is causing unnecessary panic and e-waste.

2. Future national tests must use 0x1112 (Presidential Alert) with clear "THIS IS A TEST" labeling. Test the emergency path, not the test path.

3. Google must mandate via GMS licensing that OEMs do not disable test alert reception by default, and that the toggle is visible in Settings.

4. NEMA should publish a device compatibility database — which phones receive which message classes — so consumers can make informed purchases and emergency managers can understand real coverage gaps.

5. Someone needs to ask NEMA: did you know about the isChannelEnabled() test toggle before you sent the national test? Because if you didn't, you didn't do your homework. And if you did, you knowingly sent a test that would produce false negatives and then blamed the devices.

The infrastructure worked. The towers broadcast. The modems received. The Android code did exactly what it was designed to do. The only thing that failed was the test itself — and the story the government told about it.

Technical sources: 3GPP TS 23.041, AOSP CellBroadcastReceiver (android.googlesource.com), AusAlert.gov.au, NEMA.gov.au. All code excerpts verified against AOSP mainline branches. If you find an error, tell me and I'll correct it. If you work for NEMA and want to respond, my inbox is open.

FRANKHACKS.BLOGSPOT.COM

Written by frankSx · 28 July 2026 · frankhacks.blogspot.com

This document is released under CC BY-SA 4.0. Share it. Remix it. Just link back.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home