• 0

Send UDP packet


Question

Hi

I have the LightwaveRF home lighting system, which you can supposedly communicate with via UDP packets.  I have tested this from my Windows box using an app called Packet Sender.  I send "001,!F*p" (the initialisation code) in port 9760 to 192.168.0.6 (the LightwaveRF hub).  This triggers the hub to react - simply saying "Not yet linked" - that's far enough for me right now.

I am attempting to do the same via PHP, so this is my script:

<?
$lwrfPort = 9760;
$lwrfIP = '192.168.0.6';
$lwrfInitString = "001,!F*p";
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($sock, $lwrfInitString, strlen($lwrfInitString), 0 ,$lwrfIP, $lwrfPort);
socket_close($sock);
?>

I get no errors, but it also doesn't do anything - certainly not trigger the hub.

I have tried the following terminal command:

sudo sendip -p ipv4 -is 192.168.0.6 -p udp -us 9760 -ud 9760 -d '001\,!F*p' -v 192.168.0.6

Again nothing...

Can anyone suggest anything obvious I am doing wrong?

Thanks

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

OK, this works:

echo -ne "666,\!F*p" | nc -u 192.168.0.6 9760

It shows the prompt but then just hangs and I have to CTRL+C to get back to a prompt

Link to comment
Share on other sites

  • 0

Wild guess here, Perhaps SELinux is stopping it?  SELinux usually logs to /var/log/audit/audit.log  (atleast on CentOS)

This is the log:

[Wed Aug 12 16:29:34.574067 2015] [:error] [pid 3121] [client 192.168.0.5:52634] PHP Warning:  socket_sendto(): unable to write to socket [13]: Permission denied in /var/www/html/info.php on line 7

Hmmmm, what do I need to escalate for permission?

Link to comment
Share on other sites

  • 0

I'd try putting SELinx into permissive mode (assuming your using a distro that has it by default) and see if the first command and your PHP script work. I'd be almost willing to bet SELinux would block apache/PHP from executing that script by default. 

setenforce 0

 

Link to comment
Share on other sites

  • 0

This is the log:

[Wed Aug 12 16:29:34.574067 2015] [:error] [pid 3121] [client 192.168.0.5:52634] PHP Warning:  socket_sendto(): unable to write to socket [13]: Permission denied in /var/www/html/info.php on line 7

Hmmmm, what do I need to escalate for permission?

Thats from audit.log?  That doesn't look like its from SELinux.

What linux distro are you using?

  • Like 1
Link to comment
Share on other sites

  • 0

Eep, sorry!  Ubuntu actually comes with apparmor by default, which is similar to SELinux.

You should remove SELinux.. I'm not even sure why it allowed you to install it with apparmor.

Check and verify that apparmor is on:

sudo apparmor_status

 

If it is you can disable it with this I believe:

sudo /etc/init.d/apparmor stop

 

I'm more familiar with Red Hat based distros (like Cent).  Ubuntu is more than capable of doing what you need. It mostly comes down to your taste on which distro you pick.

Link to comment
Share on other sites

  • 0
njlouch@ubuntu:~$ sudo apparmor_status
sudo: apparmor_status: command not found
njlouch@ubuntu:~$ sudo /etc/init.d/apparmor stop
/etc/init.d/apparmor: 35: .: Can't open /lib/apparmor/functions

LOL, it's being a pain, as am I

Link to comment
Share on other sites

  • 0

LOL, its possible apparmor isn't installed but just to be sure, what does this say:

sudo /etc/init.d/apparmor status
Link to comment
Share on other sites

  • 0
/etc/init.d/apparmor: 35: .: Can't open /lib/apparmor/functions

 

I shall try a different flavour.  Looking to build a terminal based install, so CentOS worth a look?

Link to comment
Share on other sites

  • 0

I prefer CentOS, its very stable and widely used for web servers.  I might be overlooking something silly here because I just don't have the same level of experience with Ubuntu. 

There are some key differences between CentOS and Ubuntu, such as SELinux vs Apparmor (or lack thereof in your case LOL).  I will warn you that SELinux is a MAJOR pain, but if security isn't going to be a big issue you can easily just turn it off.

I haven't messed with CentOS 7 yet,  being new to Linux, I would recommend CentOS 6 anyways as its better documented. 

 

EDIT: There is one more thing you could try.  Set your PHP script to be in the same user:group as apache and/or set permissions to 777. 

Link to comment
Share on other sites

  • 0

In regards to the PHP error, it looks like it's denied because of your php.ini configuration, check to see if it's got safe mode on and see what the other config is set to that might cause it to fail.

Link to comment
Share on other sites

  • 0

I also pick centos when I have to choose for a linux distro on a server, it just works and has no gimmicks and ofc yum is a nice package manager for installing new php extensions with ease.

Link to comment
Share on other sites

This topic is now closed to further replies.