one possible option is to include such a piece of code in your init.d script.
of course you need to change the test part lsmod | grep -qw module_name
to verify that the hardware module is fully initialized.
also adjust the startup of your daemon, depending if it is daemonizing itself or not.
be sure that first init script /etc/rcX.d/S98first_daemon
is launched before your homemade daemon startup script /etc/rcX.d/S99homemade_daemon
#!/bin/bash
wait_period=0
sleep_period=5
max_wait_period=30
function is_other_daemon_fully_initialized()
{
lsmod | grep -qw module_name && return 0
return 1
}
while true
do
echo "Time Now: `date +%H:%M:%S`"
echo "Sleeping for $sleep_period seconds"
wait_period=$(($wait_period+$sleep_period))
if [ $wait_period -gt $max_wait_period ];then
echo "Max wait period exceeded, abort."
exit 1
else
sleep $sleep_period
is_other_daemon_fully_initialized && break
fi
done
echo "Initialisation done in $wait_period seconds, launching second daemon."
/path/to/your/homemade/daemon