#1 Le 14/02/2007, à 14:38
- forgetms
Script au démarrage pour activation du WiFi
Bonjour,
je suis un novice dans Linux et je viens de galérer pendant une semaine d'abord avec Mandriva (sans y arriver) puis avec Ubuntu avec succès pour faire marcher mon Wifi
Je possède un portable Acer Aspire 3020 avec une carte Wifi Broadcom chipset 4318. A chaque démarrage de l'ordi je dois executer dans le terminal les commandes suivantes pour activer mon Wifi
sudo -i
cd /home/forget/Desktop
bash acer_acpi_wireless_enable start
exit
cd /home/forget/Desktop
tar -xf bcm4318*.tar.gz
sudo ./ndiswrapper_setup
Je voudrais savoir s'il serait possible d'automatiser ces commandes dans un script pour m'éviter de le faire à chaque démarrage manuellement.
Merci par avance de votre aide.
Ubuntu Maverick
Hors ligne
#2 Le 14/02/2007, à 14:59
- bakalegum_
Re : Script au démarrage pour activation du WiFi
salut
alors oui c est tout a fait faisable.
ouvre gedit en root ( pour gnome) avec la commade
gksudo gedit /usr/bin/wifi.sh
et etappe dedans
#! /bin/sh
E_NOTROOT=123
ROOT_UID=0
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "$USER doit être en root pour lancer ce script."
exit $E_NOTROOT
fi
sudo -i
cd /home/forget/Desktop
bash acer_acpi_wireless_enable start
exit
cd /home/forget/Desktop
tar -xf bcm4318*.tar.gz
sudo ./ndiswrapper_setup
( il faudrait rajouter un petit bout de code pour verifier que l utilisateur est root, je le rajouterais ce soir 9 j ai pas envi d ecrire de betise )
puis tu enregistre
tu rendd le fichier que tu viens de faire executable via la commande
sudo chmod +x /usr/bin/wifi.sh
maintenant tu n a plus qu a tapper
sudo wifi.sh
pour lancer ton wifi.
ensuite il faudrait mettre cette commande au demmarage avec gksudo devant.
cela va te demander un mot de pass a chaque fis cependant ( tu peux gerer une exception dansle sudoers cf la doc:sudo)
Dernière modification par bakalegum_ (Le 14/02/2007, à 18:12)
Hors ligne
#3 Le 14/02/2007, à 15:11
- Katarn
Re : Script au démarrage pour activation du WiFi
Ne serait il pas plus simple de lancer ce script comme service au démarrage?
Le plus simple serait de réaliser un lien symbolique dans /etc/rc2.d/ qui pointe vers le script.
Pour ça, tu suis les instructions de bakalegum_ (création du script et changement des droits pour que celui-ci soit exécutable). Le script crée se situe alors dans /usr/bin/wifi.sh
Ensuite, tu te rends dans le dossier /etc/rc2.d/ . Tu exécutes alors la commande suivante :
sudo ln -s /usr/bin/wifi.sh S20wifi
Explications :
Les différentes dossiers rcX.d présents dans /etc correspondent à des états de ton système Linux. Par exemple si linux s'éteint, il va exécuter les scripts dans rc0.d, s'il s'allume ceux dans rc2.d, s'il reboote ceux dans rc6.d
Un lien symbolique revient un peu à effectuer un raccourci vers un autre fichier. Donc dans ce cas, quand linux va se lancer, il va parcourir tout le dossier /etc/rc2.d en lançant les scripts dans l'ordre alphabétique.
L'avantage de cette manipulation c'est que le lancement est transparent.
#4 Le 14/02/2007, à 15:17
- forgetms
Re : Script au démarrage pour activation du WiFi
Merci pour vos réponses rapides,
j'attends ce soir pour le tester que bakalegum_ me communique le petit bout de code pour verifier que l' utilisateur est root.
Ouf, je vais enfin pouvoir profiter pleinement de Ubuntu.
Ubuntu Maverick
Hors ligne
#5 Le 14/02/2007, à 15:22
- DjBudge2
Re : Script au démarrage pour activation du WiFi
De rien (l'utilisateur Katarn, c'est moi... j'avais oublié que j'avais un compte ici -_-).
Par contre, un truc me parait très bizarre dans les commandes que tu effectues.
Tu extrais une archive et tu lances un script d'installation à chaque fois... Ca me paraît inutile. Que fait exactement la commande
bash acer_acpi_wireless_enable start
Est ce que tu n'aurais pas besoin de lancer que cette commande à chaque fois??
Hors ligne
#6 Le 14/02/2007, à 15:33
- forgetms
Re : Script au démarrage pour activation du WiFi
Malheureusement non!
Ma connexion Wifi est eth1 et elle disparait à chaque fois que j'éteins mon ordi.
Lorsque je lance acer_acpi_wireless_enable start, mon témoin wifi s'allume mais ma connexion est toujours non fonctionnelle et la connexion eth1 n'est pas recréée.
Pour obtenir ctte conexio je dois faire la seconde manip: extraire l'archive bcm4318*.tar.gz qui contient les drivers et le fichier ndiswrapper_setup.
CJe n'ai pas ce problème lorsque je redémarre Ubuntu.
Script: acer_acpi_wireless_enable
#!/bin/sh
case "$1" in
start|"")
modprobe acer_acpi
chmod 777 /proc/acpi/acer/wireless
echo "enabled: 1" >/proc/acpi/acer/wireless
;;
stop)
echo "enabled: 0" >/proc/acpi/acer/wireless
modprobe -r acer_acpi
;;
esac
Executable ndiswrapper_setup
#declare the variables
#############
#set arch to nothing if not 64bit, if it is 64bit it will be set to something (I could care less what it is)
arch=`uname -a | grep x86_64`
#get the md5 of the version file
issue=`cat /etc/issue | md5sum`
#get only the md5, cut the file name off the end
distromd5=`expr substr "$issue" 1 32`
#start with no distro detected, for obvious reasons - we haven't detected it yet
distro="None"
originaldirectory=`pwd`
#the version
scriptversion="0.1.2"
#############
# NOTES
#############
#
# The output variable is used only to prevent the programs from writing to the standard out,
# which makes it look nicer. The reason I use the md5sum of the /etc/issue file to determine
# the release is because it is a weird file (it has some end of line chars that I don't like),
# and because it is easier then using regexp to figure it out.
#
# This was written Saturday, October 28th, 2006, and has been updated numerous times since then.
#
echo "Starting ndiswrapper install..."
echo "If you have any package managers open (i.e. Adept or Synaptic or apt-get),"
echo "Please close them now."
echo "Pausing for 10 seconds - please read the message."
sleep 10
#write the script version to the logfile before we start
output=`logsave -a ~/Desktop/bcm4318-setup.log echo "Script version: $scriptversion"`
output=`logsave -a ~/Desktop/bcm4318-setup.log lspci | grep Broadcom`
output=`logsave -a ~/Desktop/bcm4318-setup.log echo "/etc/issue MD5 sum: $distromd5"`
output=`logsave -a ~/Desktop/bcm4318-setup.log cat /etc/issue"`
output=`logsave -a ~/Desktop/bcm4318-setup.log ps -e"`
#BEGIN DETECTING DISTRO
#edgy devel release
if [ "$distromd5" = "6d47f51c25ec07127e86be15a73c6a9d" ]; then
logsave -a ~/Desktop/bcm4318-setup.log echo "Edgy development release detected."
echo "You really should upgrade to the final release...but it is your computer."
echo "Installation will continue normally."
distro="Edgy"
fi
#edgy final release
if [ "$distromd5" = "11046fbe3787d2ba4fc5821d5a41617e" ]; then
logsave -a ~/Desktop/bcm4318-setup.log echo "Edgy final release detected."
distro="Edgy"
fi
#dapper final release
if [ "$distromd5" = "3cb50a593ad7f171a5aa9f5803354aa2" ]; then
logsave -a ~/Desktop/bcm4318-setup.log echo "Dapper final release detected."
distro="Dapper"
fi
#for some reason, the distro did not match any of my md5s...so we will tell them that, and continue with the assumption that
#we are using Edgy
if [ "$distro" = "None" ]; then
logsave -a ~/Desktop/bcm4318-setup.log echo "Neither Ubuntu Dapper (6.06.1) nor Ubuntu Edgy (6.10) detected."
echo "The script will continue, assuming that you are using Ubuntu Edgy (6.10)."
echo "If you are *not* using Ubuntu Edgy, it may be a good idea to cancel this script right now, and install ndiswrapper right now, however you would go about doing that."
echo "Pausing for 10 seconds - please read the message."
sleep 10
distro="Edgy"
fi
#DONE DETECTING DISTRO
#CHECK FOR BAD KERNEL - AMD64 WITH 2.6.17-10-generic
if [ -n "$arch" ]; then
#64bit detected
if [ "$distro" = "Edgy" ]; then
kernel=`uname -r`
if [ "$kernel" = "2.6.17-10-generic" ]; then
output=`logsave -a ~/Desktop/bcm4318-setup.log echo "Aborted due to 2.6.17-10-generic kernel"`
echo "WE HAVE DETECTED THAT YOU ARE USING EDGY EFT WITH AN"
echo "********"
echo "*INCOMPATIBLE* *64BIT* *KERNEL*"
echo "********"
echo "Please read:"
echo "http://compwiz18.blackhole.cx/bcm4318/howto.htm"
echo "(the link above can be clicked, so no need to retype)"
echo "This is a bug, and a bug report has already been filed."
echo "Aborting...please rerun after the problem is fixed."
exit 1
fi
fi
fi
#DONE CHECKING FOR BAD KERNEL
#REMOVE MODULES THAT COULD CONFLICT
output=`logsave -a ~/Desktop/bcm4318-setup.log rmmod ndiswrapper`
output=`logsave -a ~/Desktop/bcm4318-setup.log rmmod bcm43xx`
#DONE REMOVING MODULES
#print distro to log - makes it easier
output=`logsave -a ~/Desktop/bcm4318-setup.log echo $distro`
#CHECK IF SOMETHING IS USING THE DIRECTORY
#INSTALL NDISWRAPPER
if [ "$distro" = "Dapper" ]; then
echo "Installing ndiswrapper-utils..."
output=`logsave -a ~/Desktop/bcm4318-setup.log apt-get --assume-yes install ndiswrapper-utils`
echo "Done..."
fi
if [ "$distro" = "Edgy" ]; then
echo "Installing ndiswrapper-1.8..."
output=`logsave -a ~/Desktop/bcm4318-setup.log apt-get --assume-yes install ndiswrapper-common ndiswrapper-utils-1.8`
echo "Done..."
fi
#DONE INSTALLING NDISWRAPPER
#REMOVE PREVIOUS DRIVERS THAT MAY CONFLICT
logsave -a ~/Desktop/bcm4318-setup.log ndiswrapper -e bcmwl5
logsave -a ~/Desktop/bcm4318-setup.log ndiswrapper -e bcmwl5a
output=`logsave -a ~/Desktop/bcm4318-setup.log ndiswrapper -l`
#DONE REMOVING PREVIOUS DRIVERS
#INSTALL THE DRIVERS
#move to a temp directory so we don't make a mess all over your desktop
mkdir /tmp/bcm4318-setup
mv drivers-32.tar.gz /tmp/bcm4318-setup
mv drivers-64.tar.gz /tmp/bcm4318-setup
cd /tmp/bcm4318-setup
#check to see if $arch is nothing
#the extract drivers depending on which one got picked
if [ -n "$arch" ]; then
#64bit detected
logsave -a ~/Desktop/bcm4318-setup.log echo "You appear to have a 64bit system...installing the 64bit drivers..."
output=`logsave -a ~/Desktop/bcm4318-setup.log tar -xf drivers-64.tar.gz`
echo "Done..."
else
#non-64bit detected
logsave -a ~/Desktop/bcm4318-setup.log echo "You appear to have an i386 system...installing the i386 drivers..."
output=`logsave -a ~/Desktop/bcm4318-setup.log tar -xf drivers-32.tar.gz`
echo "Done..."
fi
#log the contents of the current directory for trouble shooting purposes
#maybe someone isn't in the same directory as the drivers, this can cause problems
#but I'm going to comment it out cause some people probably don't want the contents
#of their desktop published to the internet
#output=`logsave -a ~/Desktop/bcm4318-setup.log ls`
#this command should work on all arches
echo "Adding drivers to ndiswrapper..."
output=`logsave -a ~/Desktop/bcm4318-setup.log ndiswrapper -i bcmwl5.inf`
echo "Done..."
cd $originaldirectory
#DONE INSTALLING DRIVERS
#MODPROBE NDISWRAPPER
output=`logsave -a ~/Desktop/bcm4318-setup.log modprobe ndiswrapper`
#DONE MODPROBING
#PERMANENTLY SET MODULES ENABLED/DISABLED
#blacklist bcm43xx
echo "#module below does not work with Broadcom 4318 wireless cards" >> /etc/modprobe.d/blacklist
echo "blacklist bcm43xx" >> /etc/modprobe.d/blacklist
#make ndiswrapper always load on startup
echo "ndiswrapper" >> /etc/modules
#DONE PERMANENTLY SETTING THINGS UP
#GATHER SOME BASIC INFO FOR THE LOG, FOR TROUBLE SHOOTING PURPOSES
echo "Gathering wireless card information..."
output=`logsave -a ~/Desktop/bcm4318-setup.log iwconfig`
output=`logsave -a ~/Desktop/bcm4318-setup.log ifconfig`
output=`logsave -a ~/Desktop/bcm4318-setup.log iwlist scan`
echo "Done..."
#DONE GATHERING INFO
echo ""
echo ""
echo "----------------------------------"
echo ""
echo ""
#INSTALL SOME SORT OF WIRELESS MANAGER
clear
echo "You should probably install an wireless connection manager"
echo "The best choices are"
echo " network-manager OR wifi-radar"
echo "Strengths/weaknesses of network-manager:"
echo "+ Is able to use WPA, WEP, or any other kind of standard encryption"
echo "+ Easy to change networks"
echo "- Asks for keyring password on boot to connect to encrypted networks"
echo "- No network profiles, or at least you are unable to see them"
echo "- Is impossible to connect to a wired and wireless network at the same time"
echo "- No static IPs"
echo "- Network strength does not work"
echo ""
echo "Strengths/weakness of wifi-radar:"
echo "+ Works 99% of the time"
echo "+ Static IPs or DHCP"
echo "+ Supports WEP"
echo "+ Network strength sort of works"
echo "+ Doesn't need password at boot"
echo "+ Able to connect to wired and wireless at the same time"
echo "- No WPA"
echo ""
echo "After you have connected to the internet,"
echo "I would recommend installing one of these programs."
echo "To install network-manager, open Synaptic (Ubuntu) or Adept (Kubuntu)"
echo "and find the package network-manager-gnome, and install it."
echo "To install wifi-radar, open Synaptic (Ubuntu) or Adept (Kubuntu)"
echo "and find the package wifi-radar, and install it."
#DONE INSTALLING WIRELESS MANAGER
#CHMOD THE LOG SO PEOPLE CAN DELETE IT
chmod 777 ~/Desktop/bcm4318-setup.log
#DONE CHMOD
#DONE WITH ALL
#PRINT THE FINISHED MESSAGE
echo ""
echo ""
echo "----------------------------------"
echo ""
echo ""
echo "Script completed."
echo "If your wireless light is on, give your internet a shot."
echo "If you are interested in install a connection manager, please"
echo "scroll up and read the pros and cons of a couple."
echo "You will have to connect to use the internet now."
echo "This can be accomplished (in GNOME) by"
echo "going to System / Administration / Networking,"
echo "and configuring the wireless card by selecting the network name."
echo "If something is not working, please try rebooting."
echo "If you need more help, please post ~/Desktop/bcm4318-setup.log on"
echo "the forum thread where you downloaded it from for help."
Ubuntu Maverick
Hors ligne
#7 Le 14/02/2007, à 15:39
- bakalegum_
Re : Script au démarrage pour activation du WiFi
oula.. edite stp en mettant ton code entre balise stp
Hors ligne
#8 Le 14/02/2007, à 15:46
- DjBudge2
Re : Script au démarrage pour activation du WiFi
D'accord, alors après avoir lu la documentation sur ndiswrapper.
Il faudrait que t'ailles voir dans le fichier /etc/modules.
sudo gedit /etc/modules
Tu regardes s'il y a une ligne avec "ndiswrapper". S'il n'y en a aucune, rajoutes là. Tu sauvegardes le fichier. Ensuite tu redémarres ton pc et tu lances :
sudo acer_acpi_wireless_enable start
Explications :
En fait, ndiswrapper se lance comme un module qui se rajoute au noyau linux. Or, le fichier /etc/modules comprend tous les modules qui sont lancés automatiquement au démarrage. S'il n'y est pas, il se lance pas automatiquement. S'il se lance lorsque tu effectues son installation c'est parce que le script d'installation contient la commande
modprobe ndiswrapper
Cette commande permet de lancer un module manuellement.
Hors ligne
#9 Le 14/02/2007, à 16:53
- forgetms
Re : Script au démarrage pour activation du WiFi
Oula!!!!!
Il y a 14 lignes ndiswrapper, que faire?
Ubuntu Maverick
Hors ligne
#10 Le 14/02/2007, à 16:56
- bakalegum_
Re : Script au démarrage pour activation du WiFi
Oula!!!!!
Il y a 14 lignes ndiswrapper, que faire?
tu nous colle tout ca qu on regarde
Dernière modification par bakalegum_ (Le 14/02/2007, à 16:57)
Hors ligne
#11 Le 14/02/2007, à 17:04
- forgetms
Re : Script au démarrage pour activation du WiFi
Voila le résultat
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
lp
sbp2
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
ndiswrapper
Je suis obligé de m'absenter jusqu'à ce soir, merci encore de votre disponibilité.
Ubuntu Maverick
Hors ligne
#12 Le 14/02/2007, à 17:06
- DjBudge2
Re : Script au démarrage pour activation du WiFi
Oula... J'avais pas vu une ligne dans le script d'installation de ndiswrapper. Il effectue
echo "ndiswrapper" >> /etc/modules
Ce qui signifie qu'a chaque fois que tu l'installes il rajoute une ligne "ndiswrapper" au fichier /etc/modules.
Tu devrais ne laisser qu'une seule ligne avec "ndiswrapper" dans ce fichier.
Après, ça résoud pas le problème.
Si tu pouvais nous laisser le résultat de la commande
lsmod
juste après le démarrage de linux sans rien avoir touché.
Dernière modification par DjBudge2 (Le 14/02/2007, à 17:12)
Hors ligne
#13 Le 14/02/2007, à 18:13
- bakalegum_
Re : Script au démarrage pour activation du WiFi
j ai edité mon script..si j amais il sert un jour
Hors ligne
#14 Le 14/02/2007, à 20:30
- forgetms
Re : Script au démarrage pour activation du WiFi
Bakalegum_ a écrit:
j ai edité mon script..si j amais il sert un jour
Bien sur je suis intérressé, car je peux modifier le fichier ndiswrapper_setup en mettant un # devant la commande: echo "ndiswrapper" >> /etc/modules
Pour DjBudge2, le résultat de la commande lsmode:
root@Portable-Acer:~# lsmod
Module Size Used by
ipv6 272288 8
binfmt_misc 13448 1
rfcomm 42260 0
l2cap 27136 5 rfcomm
bluetooth 53476 4 rfcomm,l2cap
radeon 118816 2
drm 74644 3 radeon
powernow_k8 15008 0
cpufreq_userspace 5408 0
cpufreq_stats 7744 0
freq_table 6048 2 powernow_k8,cpufreq_stats
cpufreq_powersave 2944 0
cpufreq_ondemand 8876 1
cpufreq_conservative 8712 0
video 17540 0
tc1100_wmi 8324 0
sbs 16804 0
sony_acpi 6412 0
pcc_acpi 14080 0
i2c_ec 6272 1 sbs
i2c_core 23424 1 i2c_ec
hotkey 11556 0
dock 8716 0
dev_acpi 12292 0
button 7952 0
battery 11652 0
container 5632 0
ac 6788 0
asus_acpi 17688 0
nls_utf8 3200 2
nls_cp850 6144 2
vfat 14720 2
fat 56348 1 vfat
af_packet 24584 4
ndiswrapper 208656 0
sbp2 24584 0
scsi_mod 144648 1 sbp2
parport_pc 37796 0
lp 12964 0
parport 39496 2 parport_pc,lp
r1000 17792 0
pcmcia 40380 0
joydev 11200 0
tsdev 9152 0
usbhid 45152 0
evdev 11392 2
r8169 32136 0
sdhci 20108 0
mmc_core 32136 1 sdhci
tifm_7xx1 9472 0
tifm_core 10496 1 tifm_7xx1
snd_atiixp 21388 1
snd_atiixp_modem 17800 0
snd_ac97_codec 97696 2 snd_atiixp,snd_atiixp_modem
snd_ac97_bus 3456 1 snd_ac97_codec
yenta_socket 28812 1
rsrc_nonstatic 15360 1 yenta_socket
pcmcia_core 43924 3 pcmcia,yenta_socket,rsrc_nonstatic
pcspkr 4352 0
irda 214332 0
crc_ccitt 3200 1 irda
snd_pcm_oss 47360 0
snd_mixer_oss 19584 1 snd_pcm_oss
psmouse 41352 0
serio_raw 8452 0
snd_pcm 84612 4 snd_atiixp,snd_atiixp_modem,snd_ac97_codec,snd_pcm_oss
snd_timer 25348 1 snd_pcm
snd 58372 9 snd_atiixp,snd_atiixp_modem,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
soundcore 11232 1 snd
snd_page_alloc 11400 3 snd_atiixp,snd_atiixp_modem,snd_pcm
shpchp 42144 0
pci_hotplug 32828 1 shpchp
ati_agp 10636 0
agpgart 34888 2 drm,ati_agp
ext3 142856 1
jbd 62228 1 ext3
ohci1394 37040 0
ieee1394 306104 2 sbp2,ohci1394
ohci_hcd 22532 0
ehci_hcd 34696 0
usbcore 134912 5 ndiswrapper,usbhid,ohci_hcd,ehci_hcd
ide_generic 2432 0
ide_disk 18560 5
ide_cd 33696 0
cdrom 38944 1 ide_cd
generic 6276 0
atiixp 7824 1
thermal 15624 0
processor 31560 2 powernow_k8,thermal
fan 6020 0
fbcon 41504 0
tileblit 3840 1 fbcon
font 9344 1 fbcon
bitblit 7168 1 fbcon
softcursor 3328 1 bitblit
vesafb 9244 0
capability 5896 0
commoncap 8704 1 capability
Ubuntu Maverick
Hors ligne
#15 Le 14/02/2007, à 22:17
- forgetms
Re : Script au démarrage pour activation du WiFi
ca y est j'ai modifié le fichier ndiswrapper_setup en mettant un # devant les lignes:
echo "#module below does not work with Broadcom 4318 wireless cards" >> /etc/modprobe.d/blacklist
echo "blacklist bcm43xx" >> /etc/modprobe.d/blacklist
echo "ndiswrapper" >> /etc/modules
J'ai éteint et relancer mon ordi et les lignes ne se rajoute plus dans le fichier /etc/modprobe.d/blacklist et dans le fichier echo "ndiswrapper" >> /etc/modules
Donc en attendant une autre solution un script au démarrage m'intérresse beaucoup
Ubuntu Maverick
Hors ligne