You click Start on a VM and Proxmox answers with a classic: “tap device already exists”.
The VM doesn’t boot. The ticket count goes up. Somebody suggests rebooting the host “just to clear it.”
That error is usually a symptom, not a diagnosis. It can mean a stale tap interface, a stuck QEMU process,
a bridge that’s half-reloaded, or a networking stack that’s been “optimized” into a corner.
This guide is how you fix it without rolling dice in production.
What the error really means (and what it does not)
In Proxmox (PVE), VMs are typically started by pve-qemu-kvm (QEMU) which creates a virtual NIC
and connects it to a Linux bridge (like vmbr0) via a tap interface.
The tap interface is a kernel network device representing a layer-2 endpoint. QEMU opens /dev/net/tun,
asks the kernel for a tap device name (often tap<vmid>i<n>),
and then Proxmox adds that interface to the bridge.
The error “tap device already exists” usually means one of these:
-
A stale tap interface exists in the kernel namespace, left behind by a previous QEMU instance
that died ungracefully or by a half-done network reload. -
A VM ID collision (less common, but real in clones or mismanaged configs) causes Proxmox to try
to reuse the exact same tap name for two different starts. - A running QEMU process still owns the tap and Proxmox is attempting a second start or a forced start.
- Bridge plumbing failed (iptables/nftables hooks, Open vSwitch, ifupdown2 reload order), leaving taps in weird states.
What it does not mean: that your physical NIC is “full,” that Linux has run out of network interfaces,
or that you should restart the entire host as the default response. Rebooting works in the same sense that
turning the building power off fixes the printer.
Paraphrased idea from Werner Vogels: “You build it, you run it” — operations feedback is part of engineering, not an afterthought.
Fast diagnosis playbook
When this happens, you want an answer in minutes, not a philosophical debate about bridges.
Here’s the order that finds the bottleneck fastest.
1) Confirm it’s really a tap-name collision
- Check the task log for the VM start and copy the exact tap name mentioned (
tap100i0, etc.). - Immediately list interfaces and search for that tap.
2) Determine if a QEMU process still owns it
- Look for a running
kvm/qemu-systemprocess for the VMID. - Check file descriptors to
/dev/net/tunif needed.
3) Check bridge membership and link state
- Is the tap already enslaved to
vmbr0? - Is
vmbr0up? Is the host NIC present? Are VLAN-aware settings consistent?
4) Decide: clean up just the tap, or fix the underlying lifecycle issue
- If QEMU is dead and the tap is stale: delete the tap and retry VM start.
- If QEMU is alive: stop the VM properly; if it’s hung, terminate the QEMU process and then delete the tap.
- If network reload/automation is the trigger: stop reloading networking like it’s a screensaver.
Joke #1: A “tap device already exists” error is Linux politely saying: “I’m not mad, I’m just disappointed you didn’t clean up your mess.”
How tap devices work in Proxmox/QEMU (enough to be dangerous)
QEMU attaches VM NICs to the host in a few common ways:
- TAP + Linux bridge (most common in PVE): tap interface created; enslaved into
vmbrX. - TAP + Open vSwitch: similar idea, different switching layer and tooling.
- veth pairs / SDN (in some setups): different naming, different failure modes, similar symptoms.
In classic PVE, the tap interface name is deterministic. Proxmox uses a naming scheme like:
tap<VMID>i<N>. So VM 100, NIC index 0 becomes tap100i0.
Determinism is nice until it isn’t: if tap100i0 exists, a new start can’t create it.
A healthy lifecycle looks like this:
- Proxmox starts QEMU for VMID.
- QEMU requests a tap interface from the kernel.
- PVE scripts add it to the bridge, apply firewall rules, VLAN filters, MTU, etc.
- VM runs; tap passes Ethernet frames.
- VM stops; QEMU closes the tap; kernel removes the interface automatically (usually).
When it breaks, it’s typically because step 5 didn’t complete. QEMU crashed, got SIGKILL’d, the host network got reloaded mid-flight,
or something external (automation, monitoring, an overenthusiastic human) raced the teardown.
If you run PVE firewall, there’s more moving parts: per-VM firewall bridges (fwbr*),
firewall tap devices (fwln*, fwpr* depending on era), and rule application. Errors may mention
tap devices but the real issue is the firewall chain hook failing and leaving partial plumbing.
Interesting facts & historical context
- Fact 1: TAP/TUN devices date back to early Linux networking virtualization; TUN is layer-3 (IP), TAP is layer-2 (Ethernet).
- Fact 2: The
/dev/net/tuninterface is a kernel driver boundary that made user-space networking practical long before containers were fashionable. - Fact 3: QEMU originally leaned on user-mode networking for convenience; TAP bridged performance and realism for production workloads.
- Fact 4: Linux bridges predate modern SDN buzzwords; they’re boring in the best way—simple forwarding tables and predictable behavior.
- Fact 5: The deterministic naming Proxmox uses (
tap<vmid>i<n>) is a deliberate trade: easier troubleshooting, higher risk of name collisions when cleanup fails. - Fact 6: ifupdown2 exists because classic ifupdown struggled with complex dependency ordering; it’s better, but reloads can still be disruptive when misused.
- Fact 7: Open vSwitch gained popularity because it offered programmable switching features in software years before the kernel bridge grew equivalent knobs for many use cases.
- Fact 8: Proxmox firewall integrates at the host level; it creates extra virtual devices to enforce per-VM policies without requiring the VM to know or care.
Practical tasks: commands, outputs, decisions (12+)
Below are production-grade checks. Each includes: a command, what “good” or “bad” output looks like,
and the decision you make. Run them on the Proxmox host.
Task 1: Get the exact error and tap name from the VM start log
cr0x@server:~$ qm start 100
kvm: tap100i0: Device or resource busy
TASK ERROR: start failed: command '/usr/bin/kvm -id 100 ...' failed: exit code 1
Meaning: The kernel refused creating/attaching the tap interface. The name tap100i0 is your primary key.
Decision: Don’t reboot. Go look for tap100i0 and who owns it.
Task 2: Check whether the tap interface exists right now
cr0x@server:~$ ip -d link show tap100i0
26: tap100i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 6a:4b:3c:de:11:90 brd ff:ff:ff:ff:ff:ff promiscuity 1 minmtu 68 maxmtu 65535
tun type tap pi off vnet_hdr on persist off
Meaning: The tap exists. It might be stale or owned by a still-running QEMU.
Decision: Check for the VM process and bridge membership before deleting anything.
Task 3: Check if the VM is actually running (sometimes it is)
cr0x@server:~$ qm status 100
status: stopped
Meaning: Proxmox thinks it’s stopped. That doesn’t guarantee QEMU is dead.
Decision: Search for QEMU processes referencing VMID 100.
Task 4: Find QEMU process for the VMID
cr0x@server:~$ pgrep -a -f "qemu.*-id 100"
21477 /usr/bin/kvm -id 100 -name vm100 -m 8192 -smp 4 ...
Meaning: QEMU is still alive. Your tap isn’t stale; it’s in use.
Decision: Stop the VM cleanly (or kill the stuck process) rather than deleting the interface out from under it.
Task 5: Attempt a clean stop; then confirm process exit
cr0x@server:~$ qm stop 100 --timeout 60
stopping vm: 100
cr0x@server:~$ pgrep -a -f "qemu.*-id 100" || echo "no qemu process"
no qemu process
Meaning: Clean shutdown succeeded.
Decision: Re-check if the tap disappeared automatically; if not, you have leftover plumbing.
Task 6: If QEMU is gone but tap remains, confirm it’s not enslaved and delete it
cr0x@server:~$ bridge link show dev tap100i0
26: tap100i0 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> master vmbr0
Meaning: It’s still attached to vmbr0.
Decision: Remove it from the bridge first, then delete it. Otherwise you can leave bridge state messy.
cr0x@server:~$ ip link set dev tap100i0 nomaster
cr0x@server:~$ ip link delete tap100i0
Meaning: Tap removed.
Decision: Retry VM start; if it reoccurs, investigate why taps aren’t being cleaned on stop/crash.
Task 7: If QEMU is stuck and won’t stop, kill the right process (safely)
cr0x@server:~$ qm stop 100 --timeout 10
stopping vm: 100
TASK ERROR: timeout waiting on systemd
cr0x@server:~$ pgrep -a -f "qemu.*-id 100"
21477 /usr/bin/kvm -id 100 -name vm100 -m 8192 ...
cr0x@server:~$ kill -TERM 21477
cr0x@server:~$ sleep 3
cr0x@server:~$ kill -KILL 21477
Meaning: The VM was wedged; you forcibly terminated QEMU.
Decision: Now clean up any leftover tap or firewall bridges and check storage consistency for the VM if it was under load.
Task 8: List all taps; spot a pattern (mass leakage)
cr0x@server:~$ ip -o link show | awk -F': ' '{print $2}' | grep -E '^tap[0-9]+i[0-9]+$' | head
tap100i0
tap104i0
tap104i1
tap205i0
Meaning: You can see existing tap devices. If you see taps for “stopped” VMs, cleanup is broken.
Decision: Correlate taps to VM states before deleting in bulk.
Task 9: Map a tap to a VM config (confirm NIC index)
cr0x@server:~$ qm config 100 | grep -E '^net[0-9]+:'
net0: virtio=DE:AD:BE:EF:10:00,bridge=vmbr0,firewall=1,tag=20
Meaning: VM 100 net0 should be on vmbr0, VLAN tag 20, firewall enabled.
Decision: If the tap exists but the VM is stopped, focus on the stop path/firewall path rather than bridge basics.
Task 10: Check the bridge is healthy and has the right ports
cr0x@server:~$ bridge -d link show master vmbr0 | head -n 15
2: eno1 state UP priority 32 cost 100 hairpin off guard off root_block off fastleave off learning on flood on mcast_flood on
26: tap100i0 state UP priority 32 cost 2 hairpin off guard off root_block off fastleave off learning on flood on mcast_flood on
Meaning: Bridge sees the physical NIC and the tap (when present).
Decision: If eno1 is missing or down, your problem may be a botched network reload, not tap cleanup.
Task 11: Check ifupdown2 / networking reload history (the usual suspect)
cr0x@server:~$ journalctl -u ifupdown2-pre -u ifupdown2 -u networking --since "2 hours ago" | tail -n 25
Dec 26 09:12:03 server ifupdown2[18210]: info: executing /usr/share/ifupdown2/sbin/ifreload -a
Dec 26 09:12:04 server ifupdown2[18210]: warning: vmbr0: port tap100i0 does not exist
Dec 26 09:12:06 server ifupdown2[18210]: error: vmbr0: bridge reload failed: Device or resource busy
Meaning: A reload happened; it tripped over tap devices mid-flight.
Decision: Stop doing broad ifreload -a during business hours on hypervisors. Use targeted changes and maintenance windows.
Task 12: Check for a lock file or failed task holding state
cr0x@server:~$ ls -l /var/lock/qemu-server/ | head
-rw-r----- 1 root www-data 0 Dec 26 09:10 lock-100.conf
Meaning: A lock exists for VM 100. It may be legitimate (ongoing operation) or stale (crashed task).
Decision: Verify if any qm operation is running. Don’t delete locks blindly unless you’re sure nothing is active.
Task 13: Confirm no active qm operations for that VM
cr0x@server:~$ pgrep -a -f "qm (start|stop|migrate|clone|restore) 100" || echo "no active qm operation"
no active qm operation
Meaning: No obvious qm process is running.
Decision: If Proxmox refuses actions due to lock, investigate task logs; consider clearing lock only after verifying QEMU is stopped and storage ops are not running.
Task 14: Find who’s holding /dev/net/tun (advanced but decisive)
cr0x@server:~$ lsof -n /dev/net/tun | head -n 10
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kvm 21477 root 19u CHR 10,200 0t0 102 /dev/net/tun
Meaning: PID 21477 owns tun/tap devices. If the VM is supposed to be stopped, you found your ghost.
Decision: Fix the process lifecycle (clean stop, kill, investigate why it stuck) before doing network surgery.
Task 15: If Proxmox firewall is enabled, check for leftover fw bridges
cr0x@server:~$ ip -o link show | awk -F': ' '{print $2}' | grep -E '^(fwbr|fwln|fwpr)[0-9]+'
fwbr100i0
fwln100i0
fwpr100p0
Meaning: Firewall-specific devices exist for VM 100.
Decision: If the VM is stopped but these remain, the firewall teardown path is failing—often due to interrupted tasks or failed rule application.
Task 16: Validate VLAN-aware bridge config vs VM tag usage
cr0x@server:~$ grep -nE '^(auto|iface|bridge-vlan-aware|bridge-vids|bridge-ports|mtu)' /etc/network/interfaces
12:auto vmbr0
13:iface vmbr0 inet static
17: bridge-ports eno1
18: bridge-stp off
19: bridge-fd 0
20: bridge-vlan-aware yes
21: bridge-vids 2-4094
22: mtu 1500
Meaning: VLAN-aware bridge is enabled and allows tags 2–4094.
Decision: If bridge-vlan-aware is off or bridge-vids excludes the VM’s VLAN tag, starts can fail in odd ways (including partial device creation).
Joke #2: Network reloads on hypervisors are like “quick edits” to a database schema—fast right up until you meet reality.
Fix patterns that actually stick
Pattern A: Stale tap after crash → delete it, then investigate the crash path
If QEMU is gone and the tap remains, deleting the tap is fine. But don’t stop there.
Stale devices mean something interrupted the normal teardown. Find that “something,” or it will happen again during the worst possible change window.
Typical culprits:
- Host OOM kill taking out QEMU
- Manual
kill -9during a panic - Network reload during VM lifecycle events
- Firewall hook failures leaving partial devices
Pattern B: “Stopped” VM but QEMU still running → fix state mismatch
If qm status says stopped but QEMU still runs, you’ve got a management-plane vs data-plane mismatch.
That can happen after a failed migration, a stuck stop operation, or a management daemon restart at the wrong time.
Do this:
- Confirm the QEMU PID for that VMID.
- Attempt graceful stop.
- If it won’t die, terminate it and clean leftover devices.
- Then look at why it got stuck: storage latency, backup lock contention, kernel bug, or misbehaving guest drivers.
Pattern C: Bridge reloads are causing tap collisions → stop reloading “everything”
ifupdown2 is powerful. It’s also not magic. Reloading the entire network stack on a hypervisor with active VMs
is a great way to create ephemeral, non-reproducible failures that disappear as soon as you try to debug them.
What to do instead:
- Use targeted changes: update one bridge stanza, apply one interface change, validate, then continue.
- Schedule network reloads in a maintenance window with a rollback plan.
- If you must change live, migrate VMs off the host first. Yes, it takes longer. It also avoids drama.
Pattern D: Proxmox firewall devices linger → treat firewall as a first-class dependency
When firewall is enabled per VM (firewall=1 in VM config), PVE inserts additional virtual devices and rules.
If rule application fails (nftables/iptables backend mismatch, broken ruleset, kernel module issues), you can end up with devices that exist but aren’t wired correctly.
Practical stance: if you run PVE firewall, test firewall reloads and upgrades like you test storage upgrades. It’s in the dataplane.
Pattern E: Open vSwitch environments → use OVS tools, not bridge tools
If your Proxmox host uses OVS, Linux bridge commands can mislead you. A tap can exist, but be connected (or not) via OVS.
Confirm your stack: vmbr0 Linux bridge vs vmbr0 as an OVS bridge are different beasts wearing the same name tag.
Common mistakes: symptoms → root cause → fix
1) Symptom: VM start fails instantly; tap device exists; VM “stopped”
Root cause: Stale tap interface left behind after crash/kill/reload.
Fix: Confirm no QEMU process owns it; remove from bridge; delete tap; retry start. Then investigate why QEMU died or teardown failed.
2) Symptom: VM shows “stopped” but you still see a QEMU process
Root cause: State mismatch after failed stop/migration; management task crashed; daemon restart mid-operation.
Fix: Graceful stop or terminate the QEMU PID; clean leftover taps; check task logs and migration history before reattempting automation.
3) Symptom: Errors appear right after someone runs ifreload/ifupdown2
Root cause: Network reload races with tap creation/bridge port changes; bridge device busy; partial reconfiguration.
Fix: Avoid global reloads on active hypervisors. If already broken: stop affected VMs (or migrate), stabilize the network config, then restart VMs.
4) Symptom: Tap exists but not attached to the intended bridge
Root cause: Hook script failure while enslaving tap; firewall bridge plumbing failed; incorrect bridge name in VM config.
Fix: Verify qm config bridge matches host bridges. Check firewall device presence. Delete stale devices and retry start after fixing config.
5) Symptom: Only VMs with firewall enabled fail to start
Root cause: PVE firewall backend issue (nftables/iptables mismatch), broken rules, or lingering firewall bridge devices.
Fix: Validate firewall service and rules; clean leftover fwbr*/fwln* devices for stopped VMs; restart firewall services if needed (carefully).
6) Symptom: Happens intermittently under load; “Device or resource busy”
Root cause: Host resource pressure, slow storage causing stuck stop/start sequences, or kernel/driver issues that delay cleanup.
Fix: Check host memory pressure, I/O latency, and task queue. Fix root pressure first; otherwise you will keep chasing “stale taps” forever.
7) Symptom: Two VMs or clones fight over the same tap name
Root cause: VMID duplication across nodes, bad manual edits, or a restore/cloning workflow that caused conflicting IDs in one host namespace.
Fix: Ensure unique VMIDs per host; correct configs; don’t manually copy config files without adjusting IDs and related state.
Three corporate mini-stories (because reality has plot)
Mini-story 1: The incident caused by a wrong assumption
A mid-size company ran a Proxmox cluster that hosted internal build agents and a few “temporary” services that became permanent.
One Friday night, a VM refused to start with the tap-already-exists error. The on-call engineer saw the tap interface in ip link
and assumed it was safe to delete because qm status said “stopped.”
The deletion worked—sort of. The VM started, but network connectivity flapped. Minutes later, a different service on the same host went dark.
That’s when they noticed a still-running QEMU process for the “stopped” VM. Proxmox had lost track of it after a failed stop during an earlier backup window.
The tap wasn’t stale; it was live and carrying traffic.
Deleting the tap under an active QEMU process forced QEMU’s networking into undefined behavior. Some guests kept sending frames into a void,
others reconnected after retries. It looked like a switch issue because the symptoms were distributed and weird.
The actual fix was boring: identify the stray QEMU PID, stop it cleanly (or terminate it), clean up leftover interfaces, then start the VM once.
They also added a runbook step: never trust qm status alone when the problem involves tap devices—always confirm the QEMU PID.
Mini-story 2: The optimization that backfired
Another org decided their Proxmox nodes took too long to apply network changes during deployments. Someone introduced an “optimization”:
a pipeline step that ran ifreload -a on every hypervisor after updating a shared /etc/network/interfaces template.
The thinking was clean: “Network config stays consistent; reload is non-disruptive.”
In reality, they had active VMs with tap interfaces appearing and disappearing constantly due to CI workloads.
The global reload sometimes ran exactly when a new VM was starting or stopping. Most of the time, it worked.
Sometimes, it didn’t—and those were the tickets people remembered.
The failure mode was nasty: a VM start would create the tap, but the reload would try to reconcile bridge ports and VLAN filtering mid-creation.
You’d get tap collisions, bridge busy errors, and firewall devices left behind. The hypervisor wasn’t “down,” but it was in a semi-broken state.
They rolled back the pipeline step and replaced it with a policy: network changes require an evacuation (live migrate VMs off),
then apply changes, then reintroduce capacity. Slower? Yes. But their “optimization” had been trading reliability for convenience without telling anyone.
Mini-story 3: The boring but correct practice that saved the day
A financial services team ran Proxmox with strict change control. Their habit was simple: every hypervisor had a maintenance procedure that started with
migrating customer VMs away and ending with a post-change validation that included checking for leftover tap and firewall devices.
One afternoon, a node experienced a transient storage stall. A few VMs became unresponsive, and one QEMU process crashed hard.
When the team tried to restart the VM, they hit the tap-already-exists error. Nothing surprising there.
The saving grace was that their process already included: verify QEMU PID, verify tap existence, delete only when unowned, and confirm bridge health.
They restored service quickly without impacting unrelated VMs. The postmortem was also clean because their checklists captured timestamps and outputs.
The lesson wasn’t “be careful.” It was that repeatable mechanics beat heroics. Their boredom was a feature, not a personality flaw.
Checklists / step-by-step plan
Checklist 1: Single VM won’t start (tap already exists)
- Get the tap name from the failed start task (
tap<vmid>i<n>). - Confirm the tap exists:
ip link show tapX. - Confirm whether QEMU is running for that VMID:
pgrep -a -f "qemu.*-id <vmid>". - If QEMU is running: stop the VM cleanly (
qm stop). If stuck: terminate QEMU PID. - If QEMU is not running: remove tap from any bridge (
ip link set dev tapX nomaster). - Delete the tap:
ip link delete tapX. - If firewall is enabled: check and clean leftover
fwbr*/fwln*devices for that VMID. - Retry:
qm start <vmid>. - After recovery: inspect logs around the time it broke (network reload, OOM, crash).
Checklist 2: Many VMs failing (systemic issue)
- Stop doing changes. Especially network reloads.
- Check host load and memory pressure; if OOM is killing QEMU, taps will leak and restarts will thrash.
- Check ifupdown2/networking logs for reload attempts and errors.
- Validate bridge state: physical NIC present, bridge up, VLAN settings consistent.
- Pick one VM and follow the single-VM checklist to validate the cleanup method.
- Only then consider batch cleanup (and only for taps belonging to stopped VMs with no QEMU PIDs).
Checklist 3: Prevent recurrence (what to change in how you operate)
- Ban “reload networking on all nodes” as a default automation step.
- Make “check QEMU PID vs qm status” part of your standard troubleshooting.
- Upgrade and change firewall backends carefully; test firewall device creation/teardown.
- Monitor for leftover tap devices that belong to stopped VMs; alert before it becomes an outage.
- Document a safe cleanup procedure and require it in incident response.
FAQ
1) Is it safe to delete a tap interface manually?
Yes—if no running QEMU process owns it. Verify with pgrep and/or lsof /dev/net/tun.
If QEMU is alive, deleting the tap can break a running VM’s network in creative ways.
2) Why does Proxmox reuse the same tap name every time?
Deterministic naming maps taps to VMIDs and NIC indexes, which makes troubleshooting and firewall plumbing predictable.
The tradeoff is collisions when cleanup fails.
3) Why does this happen after cloning or restore operations?
Clones/restores can leave behind state mismatches: locks, partial device plumbing, or multiple start attempts.
Also, if someone manually copied config files and duplicated VMIDs on the same host, you can get genuine naming conflicts.
4) Does enabling Proxmox firewall make this worse?
It adds moving parts. More devices, more hooks, more chances to leave leftovers when an operation is interrupted.
That doesn’t mean “don’t use firewall.” It means test and operate it intentionally.
5) I deleted the tap but the error comes back immediately—why?
Usually because a stuck QEMU process is recreating it or because another start attempt is racing you.
Check for multiple QEMU processes, stale locks, or automation repeatedly trying to start the VM.
6) Can I just reboot the host to fix it?
Rebooting clears kernel devices and processes, so yes, it often “works.”
But it also drops every VM on the host and hides the root cause. Use it as the last resort, not the first reflex.
7) How do I know if ifupdown2 reload is the trigger?
Look for timing correlation in journalctl for ifupdown2/networking services and errors about bridge reloads, busy devices,
or missing tap ports. If the error cluster appears right after reloads, you found your trigger.
8) Does this relate to MTU or VLAN settings?
Sometimes. Incorrect MTU/VLAN config usually causes connectivity issues, but during start it can cause hook scripts to fail,
leaving partially created devices behind. Validate bridge VLAN-aware settings versus VM tags.
9) What about containers (LXC)—do they use tap devices too?
LXC typically uses veth pairs rather than taps, so the exact “tap already exists” error is more VM/QEMU-shaped.
But the operational theme is the same: stale virtual interfaces after interrupted lifecycle events.
Conclusion: practical next steps
“Tap device already exists” is not a mystical Proxmox curse. It’s a resource lifecycle problem with a name.
Fix it by being systematic: identify the tap, identify the owning process, clean up safely, and then address the trigger.
Next steps that pay off immediately:
- Adopt the fast diagnosis playbook: tap name → QEMU PID → bridge membership → cleanup.
- Stop doing broad network reloads on active hypervisors. Evacuate or schedule.
- Add a lightweight audit: alert on tap devices belonging to stopped VMs (it’s early smoke).
- If firewall is in play, treat it as dataplane code: changes require testing and rollback planning.
You don’t need more luck. You need fewer unknowns.