NinjaOne Backup — Error 121: Windows Semaphore Timeout
Audience: T1 / T2
Use when: Backup fails with "Error 121" — Windows system error ERROR_SEM_TIMEOUT (0x80070079) — "The semaphore timeout period has expired."
This is a Windows OS-level timeout. Windows initiated an I/O operation against a disk or network share, waited, and the device didn't respond in time. The backup fails because data couldn't be read or written within the timeout window.
What the Semaphore Timeout Means
The Windows OS uses semaphores to coordinate timed operations. When a disk read, NAS write, or SMB operation takes too long, Windows gives up and returns error 121. In the context of NinjaOne backup, this means:
- Lockhart tried to read data from the source disk → disk responded too slowly → timeout
- OR Lockhart tried to write data to the NAS → NAS responded too slowly → timeout
This is different from a connectivity failure (where no connection exists at all). With Error 121, a connection was established but the response took too long.
Common Causes — In Order of Likelihood at Dental Sites
| Cause | Signal |
|---|---|
| Failing/degraded source disk | Disk errors in Event Log, SMART showing errors |
| NAS drive sleeping during backup window | Error occurs at job start; NAS otherwise accessible |
| Network instability between device and NAS | Packet loss on ping to NAS during backup window |
| SMBv1 disabled with older NAS firmware | SMB dialect shows 1.0, NAS firmware is old |
| Disk controller or cable failure | Intermittent disk errors, no pattern to failures |
Step 1 — Check Source Disk Health
# SMART status check
Get-PhysicalDisk | Select FriendlyName, HealthStatus, OperationalStatus, @{N='SizeGB';E={[math]::Round($_.Size/1GB,0)}}
# Reliability counters — look for uncorrected errors
Get-PhysicalDisk | ForEach-Object {
$d = $_
Get-StorageReliabilityCounter -PhysicalDisk $d |
Select @{N='Disk';E={$d.FriendlyName}}, ReadErrorsUncorrected, WriteErrorsUncorrected
}
If HealthStatus is anything other than "Healthy" or ReadErrorsUncorrected/WriteErrorsUncorrected are non-zero: stop here, escalate to T2 immediately. This is a hardware failure in progress.
# Also check Event Log for disk I/O errors
Get-WinEvent -LogName System -MaxEvents 500 |
Where-Object {$_.Id -in @(7, 11, 15, 51, 153)} |
Select TimeCreated, Id, Message | Format-List
# 7=bad block, 11=driver error, 15=not ready, 51=I/O error, 153=I/O timed out
Step 2 — Run chkdsk (If Disk Appears Healthy But Errors Exist)
# Schedule chkdsk for next reboot
chkdsk C: /f /r /x
# Confirm when prompted: Y
# After reboot, check if chkdsk found and fixed issues in Event Log
Get-WinEvent -LogName Application | Where-Object {$_.Id -eq 26226 -and $_.ProviderName -eq "Microsoft-Windows-Chkdsk"} | Select -First 5 | Format-List
After chkdsk completes: trigger a manual backup run and monitor.
Step 3 — Check NAS Sleep Settings
If the error occurs at the very start of the backup job (NAS was idle for hours):
- Log into NAS admin panel
- Synology: Control Panel → Hardware & Power → HDD Hibernation → set to Never or at least 30 minutes
- QNAP: Control Panel → Power → Hard Disk Standby → Disable
This is also the fix for Error 319. Both 319 and 121 can be caused by NAS drive sleep.
Step 4 — Check Network Path Stability
# Sustained ping to the NAS looking for packet loss
ping NAS-HOSTNAME -n 200 -l 1400
# Any "Request timed out" responses = network instability
# Also check
Test-NetConnection -ComputerName "NAS-HOSTNAME" -Port 445
If packet loss is found: investigate switch port, cable, or NAS NIC.
Step 5 — Verify SMBv2/v3 Is Available
# Check SMB configuration on the server
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
# Check which SMB dialect is in use with the NAS
Get-SmbConnection | Where-Object {$_.ServerName -like "*NAS*"} | Select ServerName, Dialect
If the NAS is only capable of SMBv1 and SMBv1 is disabled on the server (correct per DTC security standard): update the NAS firmware to support SMBv2/v3, or explicitly enable SMBv2 on the NAS admin panel.
Escalate to T2 If:
- Disk SMART shows errors or HealthStatus is not Healthy — hardware replacement needed
- chkdsk finds bad sectors — urgent disk health situation
- Packet loss confirmed on the network path — switch/cable investigation needed
- Error recurs after NAS sleep disabled and SMB verified