I'm working on a project which requires custom packets to be injected at a mobile device connected to an unsecured access point.

I'm running into some issues due to the device's power saving feature. When I send a series of packets, and the target device is idle (connected but not actively being used), the target device receives about 5% of the broadcasted packets. For example, if 1000 of the same packet are sent out, the device will receive ~50; however, if I make sure the device is actively receiving data before I try the injection, almost all of my packets are received (>95%). For example, If I open up a youtube video on the device, then inject 1000 packets, almost all of them will be received.

I'm fairly confident that this behavior is due to the power saving feature on the mobile device, where the radio periodically wakes up to check for data from the AP. So, in the first case when ~5% of packets are received, those were the ones that arrived during a small window when the device wakes up to check for data from the AP.

For my project, the ~5% reception rate won't work. I need to be able to get this >95% reception behavior without messing with the target device at all.

So my question is: is there a way to tell the target "hey, I've got data for you. Stay awake until I've sent it all" before I broadcast my packets? When I say "tell the target" I mean via packet injection/some form of AP spoofing.