The fault is with your cooking process or the freshness of your kernels. The process I use is one an old chef taught me several decades ago.
You will need popcorn (fresh because age dries out the kernels and not enough will pop), the best you can find (Orville Redenbacher is sufficient, but look around and sample other premium brands), olive oil, a large sauce pan with (ideally) a see-through lid, and a gas range if possible (electric ranges don't give you the heat control you need).
Put enough olive oil in the pot to cover the bottom generously, and put the heat on all the way low. Let it heat for a few minutes (not to the point of smoking) and then pour in enough popcorn to cover the bottom with a single layer of kernels. The oil will be hot enough at that point to swish the kernels enough to coat them all fully. Move the pot enough to distribute the kernels fully, and put the lid on and the pot back on the range, at the same heat level.
While the popcorn is cooking, you may need to lift the lid and wipe off the condensation from the underside. Do this when you hear a drop of moisture drop and sizzle in the oil.
Keep the heat on low until you hear the first kernel pop. Then remove the pot from the heat and swirl it around to mix the kernels and distribute the browner ones away from the hot spot in the pan. Put the pot back on the heat, still on low, until you hear one more kernel pop. Then turn the heat all the way up! All the popcorn should pop in a few seconds. You may have to empty some of the popcorn into a bowl at this point to avoid overflow, but it's a good idea to shake the popcorn after half has emptied from the pot in order to distribute the remaining kernels down to the heat source.
Season to taste. Me, I like to sprinkle Parmesan cheese on it. Enjoy!
If you do this right you will get very few unpopped or partially popped kernels, and the ones that you do find will be crunchy, not hard.
If you ever can find black popcorn, give it a try, especially if you can find it fresh from a farmstand or farmstand store. It has very small kernels that pop easily into tiny white flowers, very tender but crisp.