Not sure what you mean by "hard surface", but have some experience with boolean. So, you are trying to create pits by intersecting the cylinders with the phone bottom (IE: The cylinders are one mesh separate from the phone mesh and you are not using an array modifier)?
I notice that there are ALOT of modifiers on the phone, one of these may be causing the faliure.
Well, here's what I think you should try:
1, cancel the boolean modifier and join the two meshes (object mode, select cylinders, then phone, press Ctrl+J or find join in object menu).
2, enter edit mode and select the cylinders.
3, intersect (knife).
4, select all and merge by distance (at the default small distance).
5, If I remember right, select and delete the top half of the cylinder.
6, select and delete (only faces) the circles covering the holes.
Let me know if this works!