If your BMW 6-Series's check engine light comes on & your OBD II scanner reads a P0304 code, it means that your engine has misfired on cylinder #1. This article aims to help you understand, diagnose, & finally fix code P0304. Before we get started in earnest, there's some good news: problems associated with this code often don't cause real issues & go away on their own if you just clear your trouble codes. Read on to determine if that might be the case.
What Does OBD II Code P0304 Mean On a BMW 6-Series?
The "Diagnostic Trouble Code" (DTC) P0300 indicates that you've experienced a misfire on one of your BMW 6-Series's engine cylinders – but doesn't specify which cylinder it was. This code is less helpful than its more specific counterparts ranging from P0304-P0312, which indicate misfires on specific cylinders, but it's still useful to know your engine is misfiring, even if the ECU can't tell you which cylinder is at fault.
This code will often be triggered alongside the cylinder-generic code mentioned above, so if you are reading both P0300 and P0304 (for example), I recommend you also check out our cylinder-generic article. The non-specific code article for your vehicle can be found here: Fixing P0300 on the BMW 6-Series.
What Are the Symptoms of OBD II Code P0304?
Symptoms of code P0304 are typically limited to the check engine light coming on, but in more severe cases, you might notice the engine is hard to start & will begin stumbling, hesitating, or even stalling. If you're experiencing any of these symptoms, it's a good idea to get your BMW 6-Series checked out by a mechanic as soon as possible because you're not looking at a one-off misfire. If you are the mechanic, keep reading.
How Serious is Code P0304 On the BMW 6-Series?
P0304 is one of a range of codes that don't typically require immediate attention. An occasional misfire generally isn't a huge deal. However, if you reset the codes & the code comes back right away, that changes things because repeated or persistent misfires can cause serious damage to your engine.
What Causes OBD Code P0304?
As mentioned above, P0304 indicates a misfire on cylinder #1, but to dig into what the root causes of that misfire are, we need to consider the individual components that can cause a misfire. These include:
- Faulty spark plugs (the most common cause of misfires along with the associated wiring)
- Issues with spark plug wiring
- Faulty ignition coils
- Fuel injector issues
- Defective ECU / PCM (very rare – included for completeness)
- Camshaft position sensor issues
- Failed Catalytic Converter (unusual – catalytic converters aren't wear parts)
How to diagnose & fix OBD II Code P0304 on a BMW 6-Series:
If there are no symptoms presenting and no more concerning trouble codes present in your ECU's memory, the easiest thing to do is just reset your OBD II trouble codes & see if the code comes back. In many cases it won't, and you'll be good to go. If it does come back, however, you'll need to dig a little deeper.
Start by checking your spark plugs – if you haven't replaced them in a while, it might be wise to do so as part of routine scheduled maintenance. That maintenance should include replacing the plugs, wiring, & distributor cap. If you've recently replaced your spark plugs, check the wiring & coil for any signs of damage or wear. If you need spark plugs, we recommend saving a little money & hassle by buying them on Amazon or another online retailer. Spark plugs for your BMW 6-Series can be found here.
If you've determined it's not the spark plugs or electrical components more broadly, move on to the catalytic converter. Sometimes degraded catalyst function can cause unexpected problems including misfires. We detailed a process for checking catalytic converter function in our article on code P0420. If you're not already familiar with the infrared thermometer method, I recommend you read that article before moving on.
Also consider that your air:fuel ratio might be too lean – that is, too much O2 in the mix. This is a frequent cause of unexplained misfires, and is often coupled with MAF sensor issues that skew the desired mix. Check out our article on code P0171 for more information on diagnosing & fixing lean air:fuel ratios. Even if you're not getting a P0171 code, the context will be helpful.
Checking Spark Plugs (Part 2)
If all else fails, pull out (or buy) a spark plug tester to check that your plugs are actually firing in the manner you expect.
We've laid out a comprehensive guide on testing BMW 6-Series spark plugs here: How to Test Spark Plugs on a BMW 6-Series.
If the steps above don't do the trick, you might need to consider replacing your ECU, or "Engine Control Unit". This is a rare occurrence, but it's worth mentioning because sometimes there's genuinely no other explanation. If you're not sure how to replace an ECU, don't do it yourself – this is an (expensive) job for a professional mechanic.
Our Usual Caveats:
There are a number of possible underlying issues that cause code p0304 on the BMW 6-Series, each of which has multiple potential fixes. We hope this article has been helpful, but we'd like to remind you – Use the information above at your own risk. This article is not meant to be a substitute for professional advice. If you're not comfortable with taking the steps outlined above, we recommend taking your BMW 6-Series to a mechanic or dealership to have them diagnose & repair the issue.