91³Ô¹ÏÍø

Watch CBS News

North Texas communications outage disrupts flights last week: what caused it and could it happen again?

Flight operations across North Texas are back on track after a chaotic weekend of delays, but travelers are still asking one big question: could it happen again?

Chaos unfolds when fiber optic cables accidentally cut

Severe storms caused plenty of delays on Sunday, but the real trouble came on Friday when two fiber optic cables were accidentally cut. The damage knocked out radar and communications for air traffic controllers at both DFW and Dallas Love Field, forcing a five-hour ground stop.

"I know the whole metropolitan area is out of radar," one controller could be heard saying over the radio during the outage.

The shutdown left thousands of passengers stranded. Isabella Berry, who was flying from Columbus, Ohio, says her short trip turned into an all-day ordeal.

"I was supposed to have a 2 1/2 hour flight and I was on the flight for 7 hours," said Berry.

Others missed moments they'll never get back. One Allen mother said she wasn't able to fly out in time to see her son off before his military deployment.

"Sadly, all the flights tomorrow are booked, so I'll be missing my weekend with him. I'm pretty upset about that," she said.

FAA blames data failures by Frontier Communications

The FAA blamed the outage on multiple data failures by Frontier Communications. The agency also said contractor L3Harris failed to ensure redundancies in the system worked properly.

American Airlines reported more than 1,000 flights delayed or canceled because of the outage, impacting at least 10,000 customers. The airline also pointed the finger at both Frontier and L3Harris for what it called a slow response.

Aviation litigation consultant Bonnie Hayes says while large carriers like American often take the hardest hit during events like this, they also recover the fastest.

"Behind the scenes, there's scheduling, crew tracking, dispatch systems, everything is designed to restore order quickly," Hayes said.

Congress looks for long-term fix

Meanwhile, Congress is already looking for long-term fixes. The new FAA Reauthorization Act requires the agency to audit aging communications and navigation systems and develop a roadmap to replace or upgrade them.

L3Harris released a statement saying it acted swiftly after the outage and "fully supports the FAA modernization efforts."

Travelers, though, remain skeptical. Teresa Dodson, who flies often for work, says she's adjusted her expectations.

"I've just learned to adapt. Having a flight actually on time is very rare."
"When you travel a lot for work like I do, you just don't have a choice. You just have to adapt."

For many North Texas passengers, Friday's outage was just the latest reminder of how fragile the system can be — and how quickly travel plans can unravel.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });