NinjaOne Backup — Backup Won't Start / Stuck on "Backup Started"
Audience: T1 / T2 Use when: NinjaOne shows "backup started" with no progress, or the Lockhart backup service is stopped and backups are not running.
Lockhart is the internal codename for the NinjaOne Backup agent service. It runs completely separately from the main NinjaRMMAgent — a device can appear fully online in NinjaOne while Lockhart is stopped and no backups are running at all.
Step 1 — Check service status
Run this on the device to confirm both services:
Get-Service | Where-Object {
$_.DisplayName -like "*NinjaRMM*" -or
$_.DisplayName -like "*Lockhart*" -or
$_.DisplayName -like "*NinjaOne Backup*"
} | Select DisplayName, Name, Status, StartType | Format-Table -AutoSize
Expected output on a healthy device:
| DisplayName | Status | StartType |
|---|---|---|
| NinjaOne Agent | Running | Automatic |
| Lockhart | Running | Automatic |
If Lockhart is Stopped — start it. If StartType is not Automatic — fix it (see Step 3).
Step 2 — Restart Lockhart
Restarting is the standard first step for most backup failures — it clears transient state issues:
Get-Service | Where-Object {$_.DisplayName -like "*Lockhart*"} | Restart-Service -PassThru
Get-Service | Where-Object {$_.DisplayName -like "*Lockhart*"} | Select DisplayName, Status
After restarting, go to NinjaOne → device → Backup → Run Backup Plan and watch the activity log.
Step 3 — Fix startup type
If Lockhart is set to Manual or Disabled, backups will be unreliable:
Set-Service -DisplayName "Lockhart" -StartupType Automatic
sc.exe config Lockhart start= auto
Get-Service | Where-Object {$_.DisplayName -like "*Lockhart*"} | Select DisplayName, StartType
Step 4 — "Backup started" with no progress
This is usually not a problem. NinjaOne does not show granular mid-job progress. "Backup started" simply means Lockhart is running the job.
Verify Lockhart is actually doing work:
Get-Process | Where-Object {$_.Name -like "*Lockhart*"} |
Select Name, CPU, @{N='MemMB';E={[math]::Round($_.WorkingSet/1MB,1)}}, Id | Format-Table
Get-Counter '\Process(lockhart*)\IO Data Bytes/sec' -SampleInterval 3 -MaxSamples 3
| What you see | What it means | Action |
|---|---|---|
| CPU active, IO ~300+ MB/s | Actively working — healthy | Leave it. First full backups take 2–12+ hours. |
| CPU and IO near zero | Genuinely stuck | Restart Lockhart, trigger a fresh run. |
Real-world example: CPU 13.81, RAM 997 MB, IO ~310–327 MB/s = Lockhart is healthy and actively pushing a large backup. No action needed.
Step 5 — Check the Lockhart log
If behavior is unclear, the log shows exactly what the job is doing:
Get-Content "C:\ProgramData\NinjaRMM\NinjaOneBackup\logs\lockhart.log" -Tail 50
Look for: is a job actively running, or is Lockhart looping/frozen with no activity?
Step 6 — If Lockhart won't start at all
Check whether the executable is still present:
$lockhart = Get-WmiObject Win32_Service | Where-Object {$_.DisplayName -like "*Lockhart*"}
$lockhart | Select Name, PathName, State, StartMode
if ($lockhart.PathName) {
Test-Path ($lockhart.PathName -replace '"','')
}
If the path is missing or returns False: the agent needs reinstalling. Go to NinjaOne → device → Backup → Install Backup Agent, or escalate to NinjaOne support.
Step 7 — If it starts but stops again
Pull Windows Event Log entries for Lockhart errors:
Get-WinEvent -LogName Application -MaxEvents 100 |
Where-Object {$_.ProviderName -like "*Lockhart*" -or $_.Message -like "*Lockhart*"} |
Select TimeCreated, Id, LevelDisplayName, Message | Format-List
Escalate if
- Lockhart is running, plan is assigned, but the backup never completes after 12+ hours and IO has dropped to zero
- Lockhart restarts successfully but the same crash recurs — pull logs and open a ticket with NinjaOne support
- Install Backup Agent button produces no activity and org-level backup is confirmed enabled