Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/02/2007, à 15: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, à 15: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 tongue 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, à 19:12)

Hors ligne

#3 Le 14/02/2007, à 16: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, à 16: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, à 16: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, à 16: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, à 16: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, à 16: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, à 17: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, à 17:56

bakalegum_

Re : Script au démarrage pour activation du WiFi

forgetms a écrit :

Oula!!!!!
Il y a 14 lignes ndiswrapper, que faire?

tu nous colle tout ca qu on regarde wink

Dernière modification par bakalegum_ (Le 14/02/2007, à 17:57)

Hors ligne

#11 Le 14/02/2007, à 18: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, à 18: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, à 18:12)

Hors ligne

#13 Le 14/02/2007, à 19:13

bakalegum_

Re : Script au démarrage pour activation du WiFi

j ai edité mon script..si j amais il sert un jour smile

Hors ligne

#14 Le 14/02/2007, à 21: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, à 23: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