Tiny Core Linux
Tiny Core Base => Raspberry Pi => Topic started by: vbs on April 18, 2015, 07:10:52 AM
-
I am using latest TC on RPi2 and I have the following problem:
After pulling my Wifi-USB-Adapter out and putting it back later then udhpc won't obtain a new DHCP-IP. So wlan0 is up but has no IP. When I manually run "udhcpc -i wlan0" to get a new IP then it works fine. But how can I trigger udhcpc automatically after wlan0 gets up? I searched quite a bit and fiddled around but cant find a solution. :(
So basically I am searching something that is similar to "/etc/network/if-up.d/" on other distros.
Many thanks!
-
hi: I am not an expert but I think you need a second DHCP server running in your network which assigns IP addresses in another IP range than your main router. Your main router fi may assign 192.168.0.1 - 192.168.0.49. Then you have your second DHCP server assign addresses between 192.168.0.50 and 192168..0.60.
Broadcasting also must not have the same IP, but I am not sure about this.
I do not know whether a static IP outside the main router/DHCP server address range might work?
-
Hm, probably I have phrased my problem poorly:
I dont need a different IP from a different IP range I just need to trigger udhcpc again to obtain an IP, because after plugging the Wifi-USB in it does not have an IP at all anymore. One solution probably would be to use a static IP for wlan0 so I dont need DHCP at all. But I dont want to switch to static IP. :(
-
By default there is nothing watching for network interfaces appearing. You need to install some daemon to do that.
-
There are two ways how to do so. I'm using udhcpc -i wlan0 which restores the IP as you've already mentioned.
If you're changing the dongle very often and even more if you're using several ones, it's better to use the simple script which monitors the iwconfig and when the dongle is identified, it automatically calls the udhcpc. This script is already called from rc.d during startup, but works only for the first time. You may either to modify this script to keep working after the first-shot, or copy this, modify and place to the /opt folder and call it during startup. But in that case you need to disable the first-shot one not to work in parallel.
-
Hi vbs
I think udev might be what you are looking for.
Create a file called:
/etc/udev/rules.d/15-wifi-usb.rules
Place the following in that file:
SUBSYSTEM=="usb", ATTR{idProduct}=="1446", ATTR{idVendor}=="12d1", RUN+="udhcpc -i wlan0"
Replace 1446 and 12d1 with the product and vendor IDs of your device. Save the file and run:
sudo udevadm control --reload-rules
Unplug your device, wait a few seconds, plug it back in and see if you get a new IP. If it works, add the file to your backup.
Syntax for the rules was lifted from here:
http://forum.tinycorelinux.net/index.php/topic,11509.msg60770.html#msg60770
-
Something wrong in the format. I got the error message that unknown key SYSFS{idProduct} and unknown key SYSFS{idVendor}.
-
Hi jgrulich
You are correct. It seems SYSFS has been replaced by ATTR. Try:
SUBSYSTEM=="usb", ATTR{idProduct}=="1446", ATTR{idVendor}=="12d1", RUN+="udhcpc -i wlan0"
-
I've tested and the correct format is this:
SUBSYSTEM=="usb", ATTR{idVendor}=="0bda", RUN+="/sbin/udhcpc -i wlan0"
For identification is enough to use vendor ID, it's even better when you have more dongles with the same chipset, it will work for all of them.
But be careful. This gives error message at the startup, when restored via backup, because it tries to get the IP even the dongle is not inicialized and wpa_supplicant is not running yet.
-
Hi jgrulich
Thanks, I corrected the syntax in my original post.
But be careful. This gives error message at the startup, when restored via backup, because it tries to get the IP even the dongle is not inicialized and wpa_supplicant is not running yet.
I'm sure the rule could be made more robust. Alternatively, rather than having the rule run a command, you could have it run a
script that first tests if the dongle is ready and wpa_supplicant is running. If they are, the script runs the udhcpc command. If
they are not ready and running, the script just exits.
-
Just tested and it works well. Udev runs the script where the dongle and wpa is correctly stopped, wait some time and than run wpa and udhcpd. This works well at the startup and every time I remove and plug the dongle.
-
Hi jgrulich
Maybe you could paste a copy of your script in your next post so that vbs can use it as an example.
-
Many thanks guys! This is working quite well now! :)
Only thing I added is a little startscript so it takes care of shutting down the previous udhcpc-process. Otherwise you will end up having an additional udhpc process every time you plug in the WIFI stick.
I grabbed an init-script template from here:
https://raw.githubusercontent.com/fhd/init-script-template/master/template
And did some changes and put it to '/etc/init.d/dhcp-wlan0.sh':
http://pastebin.com/aVjj06iW
This is my udev rule now:
SUBSYSTEM=="usb", ATTR{idProduct}=="5370", ATTR{idVendor}=="148f", RUN+="/etc/init.d/dhcp-wlan0.sh restart"
I am not very experienced when it comes to shell scripts so I am sure there is lots of room for optimization in the script but currently it works good enough for me.
Thanks again!