Skip to main contentSkip to navigation
Lab Operational Since: 17 Years, 9 Months, 8 DaysFacility Status: Fully Operational & Accepting New Cases

Case Study

Recovering a Voice Memo That Was Unplayable for 14 Years

A 45 MB voice memo recorded on an iPhone 3G on November 14, 2011 arrived at our lab. The file hadn't played since the day it was recorded. Over five commercial repair tools had failed. Every one assumed the wrong codec. We identified the real codec, wrote custom scanning tools, rebuilt the file's metadata from scratch, & recovered all 19 minutes & 32 seconds of audio.

Author01/12
Louis Rossmann
Written by
Louis Rossmann
Founder & Chief Technician
Updated April 2026
12 min read
Pricing02/12

Can corrupted voice memos be recovered?

Yes. A corrupted voice memo usually contains intact audio data trapped inside a broken file container. The metadata index (called a moov atom) that tells players how to read the audio is missing or damaged. Recovery means identifying the codec, scanning for every frame boundary in the raw data, & rebuilding that index from scratch. iPhone data recovery at Rossmann Repair Group costs $500–$750. If we can't recover your data, you don't pay.

45 MB M4A File with a Missing Moov Atom03/12

45 MB M4A File with a Missing Moov Atom

The file was 2_22 AM 11_14_2011.m4a, recorded using Apple's built-in Voice Memos app on an iPhone 3G running iOS 3.x or 4.x. The recording was 45,251,298 bytes (45 MB), with SHA-256 hash eb712368ea10ffc3bc6de73d78aed95c7ab8bf1a56218043a600b4a9b0f72783. Two copies of the file existed; the second had a timestamp suffix appended to the filename. SHA-256 confirmed they were byte-identical, so only one needed recovery work.

The iPhone 3G was released in 2008 & discontinued in 2010. Voice Memos was introduced with iPhone OS 3.0 in June 2009. The file had been sitting in backups for over 14 years. No one could play it.

Hex inspection confirmed the file contained only three atoms. The moov atom was completely missing.

File Structure: 2_22 AM 11_14_2011.m4a
0x0000
ftyp28 bytes · File type: M4A · intact
0x001C
wide8 bytes · placeholder
0x0024
mdat45,251,262 bytes · raw ALAC audio · size field = 0 (extends to EOF)
EOF
moovMISSING · no codec info, no frame index, no duration

The mdat atom's size field was set to zero. Under the MPEG-4 specification, a zero-length size field means "this atom extends to the end of the file." Valid encoding, but some repair tools interpret a zero-length mdat header as an empty atom rather than a file-spanning one.

What Is a Moov Atom & Why Was It Missing?04/12

What Is a Moov Atom & Why Was It Missing?

An M4A file (MPEG-4 audio container) stores audio data in a hierarchy of structures called atoms. A valid M4A needs three: the ftyp identifies the container format, the mdat holds the raw encoded audio, & the moov contains the codec configuration, sample rate, channel count, frame size table, & byte offset index that maps every frame inside the mdat.

Without the moov, no software knows what codec was used, what the sample rate or bit depth is, where each frame starts & ends, or how long the recording is. The file is a 45 MB blob of compressed audio with no instructions.

How the Moov Gets Lost: Interrupted Recording

When Voice Memos records, it writes raw audio frames into the mdat in real-time. The indexing metadata (frame sizes, byte offsets, codec configuration) stays in the phone's volatile RAM. The iPhone 3G had 128 MB of DRAM shared between the OS & all apps.

When recording stops normally, the app takes that RAM-based index, constructs the moov atom, & appends it to the file. When recording is interrupted abnormally, the RAM buffer is wiped before it can be written to flash storage. The audio data survives in the mdat. The moov is never written.

Given the circumstances (a nearly 20-minute recording at 2:22 AM on an aging iPhone 3G in late 2011), the most probable cause was battery death, an out-of-memory crash from iOS's aggressive OOM killer, an app crash in early Voice Memos, or storage exhaustion on the phone's flash. Any of these produces the same result: valid ftyp, valid mdat full of audio, no moov.

Every Approach That Failed05/12

Every Approach That Failed

Phase 1: Standard Diagnosis

ffprobe reported zero playable streams. It could see the ftyp & mdat atoms but couldn't find a moov, so it had no idea what codec was inside. Shannon entropy analysis of the mdat payload yielded 7.98 bits per byte (near the theoretical maximum of 8.0), confirming the data was compressed audio, not raw PCM or random noise.

Phase 2: AAC Codec Testing (All Failed)

Based on the .m4a extension & general knowledge that iPhones record in AAC, every initial attempt assumed the audio was AAC-LC. This was wrong.

  • The mdat was scanned for ADTS sync words (the 0xFFF bit pattern that marks AAC frame headers). None were found.
  • Raw mdat extraction with ADTS header wrapping at various sample rates (8000, 16000, 22050, 44100, 48000 Hz) produced static or silence.
  • Synthetic moov atoms were built with AAC-LC codec configurations at various sample rates & channel configurations (8000, 16000, 22050, 44100, 48000 Hz; mono & stereo; with & without SBR) & appended to the file. ffmpeg's AAC decoder returned zero decoded samples in every case.

Before abandoning the AAC hypothesis, we analyzed the first bytes of the mdat (00 00 00 00 00 13 08 09) bit-by-bit as if they were AAC syntax elements. The byte 0x13 was parsed as an AAC Single Channel Element (SCE) tag with specific element_instance_tag & global_gain values. The analysis appeared plausible on the surface; it produced a coherent AAC parse. But it was wrong.

Wrong: AAC Parse
00 00 00 00 00 13 08 09
0x13 = SCE tag (id_syn_ele=0, element_instance_tag=4)
0x08 0x09 = global_gain + ics_info
Result: 0 decoded samples
Correct: ALAC Frame
00 00 00 00 00 13 08 09
ALAC frame header (variable-length)
Codec: Apple Lossless, 44,100 Hz, 16-bit, mono
Result: 4,096 PCM samples per frame

The data was not AAC. Every tool that tried to treat it as AAC returned nothing.

Phase 3: untrunc (Multiple Attempts)

untrunc is an open-source tool designed to repair MP4/M4A files with missing moov atoms by using a healthy "reference file" recorded with the same device & codec. Multiple AAC reference files were generated at various sample rates. Every attempt failed because ffmpeg's AAC decoder returned zero samples from the mdat.

The untrunc source code was examined & two bugs were found in its codec matching logic. Both were patched to be more permissive. After patching, untrunc's matcher accepted the data as "mp4a" audio, but ffmpeg's AAC decoder still returned zero samples. The matcher could be fooled. The decoder could not.

Even after we identified the correct codec, untrunc couldn't help. An ALAC reference file was generated & fed to untrunc. This time it correctly identified the track as "alac" but reported Bad track: 'alac' with a warning that it lacked logic for ALAC frame detection. untrunc was designed for H.264 video & AAC audio recovery; its ALAC support didn't include frame boundary detection. The file also showed mdat->file_end: 48, suggesting it interpreted the zero-length mdat header as an empty atom rather than a file-spanning one.

Why Over Five Commercial Tools Failed

Every commercial M4A repair tool assumes the audio codec is AAC because every iPhone from the 3GS onward (2009 to present) records voice memos in AAC. Every iTunes Store purchase is AAC. AAC in M4A is the near-universal standard across Apple's entire product line.

The iPhone 3G's use of ALAC for voice memos was a brief historical anomaly limited to a single device generation, discontinued over 15 years ago. No commercial tool's codec detection matrix includes ALAC for this use case. When their AAC heuristics find nothing recognizable, they report the file as "severely corrupted" or "unrecoverable."

Identifying the Real Codec06/12

Identifying the Real Codec

After every AAC-based approach failed, we stopped trying to fix the file as AAC & started researching the iPhone 3G's hardware capabilities & the audio subsystem behavior of iOS 3.x.

Our research identified the answer: the iPhone 3G Voice Memos app recorded in Apple Lossless (ALAC), not AAC. The iPhone 3G lacked the dedicated hardware encoding silicon or sufficient CPU overhead to encode compressed AAC in real-time. Apple's solution was ALAC, a lossless codec that's computationally simpler to encode. The iPhone 3GS, released in June 2009 with a faster processor, was the first to switch Voice Memos to AAC-LC.

This explained everything. AAC decoders returned zero samples because the data isn't AAC. No ADTS sync words were found because ALAC doesn't use ADTS framing. The hex signature 00 00 00 00 00 13 08 09 didn't match any AAC syntax pattern because it's a documented ALAC frame header. The entropy was near-maximum because ALAC uses Rice coding & linear prediction, producing high-entropy compressed output despite being lossless.

Proving the Codec Before Building the Scanner

Before committing to a full frame scanner, we built a test moov atom using a constant estimated frame size of 3,780 bytes. ffprobe immediately recognized the file as ALAC, 44,100 Hz, approximately 1,112 seconds, at roughly 326 kbps. ffmpeg decoded frame 0 successfully: 4,096 samples of real, audible audio came out.

Subsequent frames failed with "Syntax element 5 is not implemented" errors because the constant frame boundaries didn't align with the actual variable-length ALAC frames. But that first frame was enough. One frame of real audio proved the codec identification was correct. The remaining problem was finding where each of the other 12,618 frames started & ended.

How the File Was Reconstructed07/12

How the File Was Reconstructed

With the codec identified, the recovery required three custom steps that no commercial tool provides.

ALAC Configuration: The 36-Byte Magic Cookie

ALAC's decoder requires a 36-byte initialization structure called a Magic Cookie (the equivalent of AAC's AudioSpecificConfig). A reference ALAC file was generated using ffmpeg, & the Cookie was extracted & verified:

00 00 00 24 61 6C 61 63 00 00 00 00 00 00 10 00
00 10 28 0A 0E 01 00 FF 00 00 00 00 00 00 00 00
00 00 AC 44

This 36-byte structure encodes the frame length (4,096 samples), bit depth (16), Rice coding parameters (pb=40, mb=10, kb=14), channel count (1, mono), & sample rate (44,100 Hz).

Custom Frame Scanner: Binary Search on 45 MB

A Python script using PyAV (Python bindings for ffmpeg) scanned the entire mdat for ALAC frame boundaries. The algorithm initialized an ALAC decoder with the 36-byte Magic Cookie, then for each frame position, attempted to decode with a large packet & used binary search to find the minimum byte count that still produced a valid decode. That minimum is the exact frame size.

MetricValue
Frames found12,619
Decode errors0
Minimum frame size2,918 bytes
Maximum frame size5,975 bytes
Average frame size3,586 bytes
Total samples decoded51,687,424
Duration19 minutes 32 seconds

The scanner processed all 45 MB in 10.3 seconds at roughly 1 ms per frame. The full decode of all 12,619 frames took 0.9 seconds. Total wall time from start to a complete frame map: 11.2 seconds.

Every byte of the mdat was accounted for as part of a valid ALAC frame. Zero bytes left over. Zero decode errors.

Moov Atom Reconstruction

A second Python script constructed a complete, standards-compliant moov atom from scratch. This isn't a repair or a patch; it's a ground-up build of the entire metadata container.

stsd (Sample Description)
ALAC codec entry with the 36-byte Magic Cookie containing sample rate, bit depth, channel count, & Rice coding parameters.
stsz (Sample Size Table)
12,619 exact frame sizes from the scan, one entry per frame.
stco (Chunk Offset Table)
12,619 absolute file offsets mapping each frame's position in the mdat.
stts (Time-to-Sample)
A single run-length entry mapping all 12,619 frames, each containing 4,096 samples at 44,100 Hz.

The reconstructed moov was combined with the original mdat. The resulting M4A plays in Apple Music, VLC, ffmpeg, foobar2000, & any other player that supports ALAC.

Before: Corrupted
ftyp28 B
wide8 B
mdat45,251,262 B (size=0)
moovMISSING
ffprobe: "No playable streams"
After: Reconstructed
ftyp28 B · M4A/mp42/isom
moovstsd + stsz(12,619) + stco(12,619) + stts(1)
mdat45,251,262 B · untouched
ffprobe: ALAC, 44100 Hz, mono, 19:32
Recovered Output Formats08/12

Recovered Output Formats

We delivered four copies of the recovered audio in different formats.

FormatSizeSpecsPurpose
ALAC .m4a44 MB44,100 Hz / 16-bit / mono / ~309 kbpsLossless, identical to original audio
FLAC43 MB44,100 Hz / 16-bit / monoLossless, wide compatibility
WAV (PCM)99 MB44,100 Hz / 16-bit / mono / 705.6 kbpsUncompressed, universal
AAC 128k .m4a19 MB44,100 Hz / mono / 128 kbpsCompressed, portable
Professional Mastering of the Recovered Audio09/12

Professional Mastering of the Recovered Audio

The raw recovered audio was complete & technically accurate, but it had the characteristics of a voice memo recorded on 2011-era smartphone hardware in an uncontrolled environment: audible electrical hum, background hiss from the iPhone 3G's microphone & analog-to-digital converter, & inconsistent levels.

Louis Rossmann performed professional mastering on the recovered file. Rossmann worked as a technician at Avatar Studios (now Power Station at BerkleeNYC) in New York City during 2007-2008. Avatar was one of the most respected recording studios in the world, known for recording artists including The Foo Fighters, Aerosmith, & Tony Bennett. That environment provided hands-on experience with world-class signal processing chains & mastering workflows.

What the Mastering Involved

  1. Spectral noise reduction: Removed electrical hum & background hiss, calibrated to eliminate the noise floor without introducing artifacts or damaging the voice signal.
  2. Gain staging & loudness normalization: Brought the voice memo to a consistent listening level without clipping or distortion, following broadcast & streaming loudness standards.
  3. Targeted EQ & dynamic processing: Improved voice clarity & intelligibility, compensating for the iPhone 3G's limited microphone frequency response.
Why This Recovery Required a Custom Approach10/12

Why This Recovery Required a Custom Approach

Three things separated this recovery from what any off-the-shelf tool can do.

  1. Correct codec identification through historical research. Determining that the iPhone 3G used ALAC required research into Apple's hardware capabilities circa 2009 & the behavior of iOS 3.x's Voice Memos app. This is obscure historical knowledge not encoded into any commercial repair tool.
  2. A custom ALAC frame boundary scanner. A purpose-built Python script used ffmpeg's ALAC decoder via PyAV with the correct configuration (44,100 Hz, 16-bit, mono, 4,096 samples per frame) to decode each frame individually. Binary search found the exact size of all 12,619 frames with zero errors.
  3. Manual M4A container reconstruction. With exact frame sizes known, a second script built a complete moov atom from scratch: the ALAC-specific Magic Cookie, a per-frame sample size table (stsz), chunk offset table (stco), time-to-sample mapping (stts), & the full container hierarchy (mvhd, tkhd, mdhd, hdlr, minf, dinf, stbl).

No commercial tool performs this sequence. They're built for common cases (AAC audio, H.264/H.265 video) & rely on pattern-matching heuristics that don't extend to ALAC bitstreams from a device that's been obsolete for over 15 years.

The AAC investigation alone consumed rounds of ADTS scanning, bitstream parsing, synthetic moov construction, & untrunc source code patching before we stepped back & questioned the codec entirely.

When the Voice Memo Is Trapped on a Phone That Won't Boot11/12

When the Voice Memo Is Trapped on a Phone That Won't Boot

The recovery above solved a container problem: a valid audio file with a missing index, already sitting in a backup. A different situation looks identical to the owner but is entirely a hardware problem. If the recording exists only on an iPhone that won't power on, or that powers on but never mounts to Finder or iTunes, the memo isn't gone. The board just can't present it.

Two Different Problems That Look the Same

A corrupt file that already copied off the phone is a software job: identify the codec, rebuild the moov atom, done. Audio trapped on a phone that won't boot is a board-level microsoldering job. No file tool can reach a recording the board won't hand over, because the phone never presents its storage to a computer in the first place.

Signs the recording is trapped by a board fault, not a file fault:

  • The phone shows no display, no Apple logo, & no response when plugged in to charge.
  • The phone charges but never appears in Finder or iTunes when connected to a computer.
  • The screen lights but the device sticks in a boot loop & never reaches the lock screen.
  • The phone got wet, or took a hard drop, before the recording was ever backed up.

Why There's No Chip-Off Shortcut

Voice memos live on a BGA-soldered NAND chip as ciphertext under iOS Data Protection, keyed by the Secure Enclave inside the processor. On any A7-and-later iPhone (the 5s & everything after), desoldering that NAND & reading it on a programmer returns only ciphertext. There's nothing to decrypt it with, because the key material is fused into the original SoC & never leaves it. Chip-off yields a raw dump with no filesystem & no audio, so it isn't a path to the recording.

In-place decryption needs three originals together: the original SoC (Secure Enclave), the paired NAND, & the owner's passcode. A donor NAND, or a blank or foreign chip swapped in, yields nothing. The path is to microsolder-repair the original board until it boots, or transplant the whole paired set of SoC, NAND, & EEPROM together to a donor board when the original is destroyed, then power it on & let the owner enter the passcode so the phone decrypts its own data & the files copy out over USB.

The Board Faults That Trap a Recording

The USB data controller IC is the usual suspect when charging works but nothing appears in Finder. That IC is Tristar on phones before the iPhone 8, & Hydra on the iPhone 8 through 14 (the U6300 designator; on newer generations we name the family without a U-number). A failed data IC can leave charging fully functional while the USB data line stays dead, so the board never handshakes with a computer or the lab's tools until the IC is microsolder-replaced. Tigris is a charging IC, not the data IC, & the two aren't interchangeable.

A power fault stops boot earlier. A short-to-ground on a main rail such as PP_VCC_MAIN, common after liquid corrosion creeps under the BGA pads, halts the boot sequence, & a board that won't boot can't decrypt anything. Diagnosis is diode-mode measurement, probing voltage drop pin by pin: a normal reading is 0.3 to 0.7V, & a reading near 0.0V is a short to ground pointing at the dead rail. A hard drop can instead fracture the microscopic BGA joints under the SoC or NAND; reflowing or reballing those joints restores the electrical path the data was always waiting behind.

These are the same constraints that govern photo recovery, message recovery, & general iPhone recovery. When the board won't boot there's no special software path for audio, & no way around the passcode: the recording comes back only by restoring the original hardware so the owner can unlock it. iPhone board repair here runs $500–$750. No data, no fee. Free evaluation. No diagnostic charges.

Frequently Asked Questions12/12

Frequently Asked Questions

Can corrupted voice memos be recovered?
Yes. A corrupted voice memo is usually a valid audio file with a missing or damaged moov atom. The raw audio data inside the mdat container is intact; the metadata index that tells players how to read it is gone. Recovery requires identifying the correct codec, scanning for frame boundaries, and rebuilding the moov atom from scratch. Rossmann Repair Group performs this work for $500–$750 depending on complexity.
Why is my iPhone voice memo not playing?
The most common cause is a missing moov atom. The moov atom is the metadata index inside an M4A file that tells media players the codec, sample rate, channel count, and the location of every audio frame. If a recording was interrupted by battery death, an app crash, or storage exhaustion, the moov never gets written. The raw audio survives inside the file, but no player can read it without the index.
What is a moov atom?
A moov atom is the metadata container inside an MPEG-4 audio or video file. It stores the codec configuration (stsd), the byte size of every audio frame (stsz), the file offset of every frame (stco), and the timing map (stts). Without it, a player sees raw compressed audio data but has no instructions for decoding it. Reconstructing a moov atom requires knowing the exact codec, scanning every frame boundary, and building each sub-atom from the scan results.
What codec did iPhone 3G use for voice memos?
Apple Lossless (ALAC). The iPhone 3G lacked the dedicated hardware or CPU overhead to encode AAC audio in real-time during voice recordings. Apple used ALAC because it's computationally simpler to encode. The iPhone 3GS, released in June 2009 with a faster processor, was the first to switch Voice Memos to AAC-LC. This distinction matters for recovery because every commercial repair tool assumes AAC, and ALAC frame detection requires completely different parsing logic.
Can you recover a voice memo from an old iPhone?
Yes, if the raw audio data is intact inside the file. Age doesn't degrade digital data stored in backups. The challenge is identifying the correct codec for that specific iPhone model and iOS version, then building the tools to parse it. iPhone data recovery at Rossmann Repair Group costs $500–$750.
Are voice memos from newer iPhones easier to recover?
Voice memos from the iPhone 3GS and later use AAC, which standard repair tools can sometimes handle if the moov atom is missing. The iPhone 3G is uniquely difficult because of the ALAC anomaly; no commercial tool includes ALAC in its codec detection matrix for voice memos. We recover voice memos from all iPhone models, but the 3G requires fully custom tooling that doesn't exist anywhere else.
What happens when an M4A file is missing its moov atom?
Every media player rejects the file. Without the moov atom, software can't determine the codec, sample rate, frame boundaries, or duration. Tools like ffprobe report zero playable streams. Repair tools that assume AAC produce static or silence because the data may be encoded with a different codec. The only fix is identifying the actual codec, scanning the raw data for frame boundaries, and reconstructing the entire moov atom from scratch.
Can you recover a voice memo from an iPhone that won't turn on?
If the phone won't boot, the recording is trapped, not erased. The audio sits intact on the BGA-soldered NAND while the logic board can't present it. Recovery is board-level microsoldering: we repair the original board (a failed Tristar or Hydra USB data IC, a PMIC or power-rail short, or fractured BGA joints) so it boots and decrypts in place when the owner enters the passcode, then the files copy over USB. There is no chip-off shortcut, because a desoldered NAND yields only ciphertext without the original paired processor. iPhone board repair at Rossmann Repair Group runs $500–$750, with no data, no fee.
Does chip-off data recovery work on modern iPhones?
No. On any A7-and-later iPhone (the 5s and everything after), the NAND stores your data as ciphertext under iOS Data Protection, keyed by the Secure Enclave inside the processor. Desoldering that chip and reading it on a programmer returns a raw dump with no filesystem and no audio, because the key material is fused into the original SoC and never leaves it. Decryption is only possible with the original paired SoC, the paired NAND, and the owner's passcode together, on a board repaired so the phone boots and decrypts its own data in place.

Data Recovery Standards & Verification

Our Austin lab operates on a transparency-first model. We use industry-standard recovery tools, including PC-3000 and DeepSpar, combined with strict environmental controls to maintain drive integrity. This approach allows us to serve clients nationwide with consistent technical standards.

Open-drive work is performed in a ULPA-filtered laminar-flow bench, validated to 0.02 µm particle count, verified using TSI P-Trak instrumentation.

Transparent History

Serving clients nationwide via mail-in service since 2008. Our lead engineer holds PC-3000 and HEX Akademia certifications for hard drive firmware repair and mechanical recovery.

Media Coverage

Our repair work has been covered by The Wall Street Journal and Business Insider, with CBC News reporting on our pricing transparency. Louis Rossmann has testified in Right to Repair hearings in multiple states and founded the Repair Preservation Group.

Aligned Incentives

Our "No Data, No Charge" policy means we assume the risk of the recovery attempt, not the client.

We believe in proving standards rather than just stating them. We use TSI P-Trak instrumentation to verify that clean-air benchmarks are met before any drive is opened.

See our clean bench validation data and particle test video

Have a corrupted voice memo or audio file?

We recover data from iPhones, corrupted files, & damaged storage. $500–$750 for iPhone recovery. Free evaluation, no data no fee.

(512) 212-9111Mon-Fri 10am-6pm CT
No diagnostic fee
No data, no fee
4.9 stars, 1,837+ reviews