Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

[SOLVED][Feature Request]Wifi Key import via /boot/wifikeyfile.txt



  • I solved the issue. We can import any WIFI and SSID that is setted to file /boot/wifikeyfile.txt

    An example forwifikeyfile.txt is:

    ssid="WIFI BASE SSID"
    psk="Secret Key"
    

    This will result to etc/wpa_supplicant/wpa_supplicant.conf
    You see annother WIFI setting is just placed under your current settings.
    So easily new configs can be imported and appended to WIFI setup.

    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    # RETROPIE CONFIG START
    network={
    	ssid="RealNetwork1"
    	psk="RealKey1"
    }
    # RETROPIE CONFIG END
    network={
    	ssid="WIFI BASE SSID"
    	#psk="Secret Key"
    	psk=5bee4223648102a29c09b2b52bbd2fc920c4d90ced9292781477d1bf219b753a
    }
    

    All this is done by this small Bashfile Wifikeyimport.sh

    #!/bin/bash
    # Wifikeyimporter by cyperghost
    # For RetroPie - greetz fly out to Vika, BuZz, Cott, meleu
    
    # Path to Wifi keyfile
    wifikeyfile="/boot/wifikeyfile.txt"
    
    # Sample wifikeyfile.txt ... place it to /boot/wifikeyfile.txt
    # psk="Your WIFI password"
    # ssid="WIFI SSID"
    
    . $wifikeyfile
    
    echo "Wifi SSID in wifikeyfile is named: " $ssid
    echo "Setted Password is: "$psk
    
    sudo -i|wpa_passphrase "$ssid" "$psk" >> /etc/wpa_supplicant/wpa_supplicant.conf & exit
    

    All we need is to locate the bash file posted above into RetroPiemenu! So we need NO keyboard to import setted wifi keys.

    For further information read here

    Knowledge is power :)
    This is my first batch file for unix systems - so excuse me for noobish errors
    It works for my current setup and login for user Pi ... can someone please verify?

    Important: Make wifikeyimport.sh executeable, then login as pi and use SUDO command. Two ways

    1. sudo ./wifikeyimport.sh
    2. sudo bash wifikeyimport.sh

  • administrators

    I will add the facility to use this configuration file from the wifi module. Cheers.



  • @BuZz That would be nice!


  • administrators



  • @BuZz
    That's a nice one! Works 100%

    Test area:
    I connected via Wifi SSH to Raspberry.
    Imported wrong (default sample keyfile) >> Lost connection

    Powered Off Raspberry, removed SD card, inserted in Windows mashine
    Opend wifikeyfile.txt from FAT32 partition via editor (Notepad ++ is the better choice!)
    Changed default entries to correct password.

    Back to Raspberry, RetroPie Menu, Select Wifi
    Imported now right setted keyfile >> Connections established!

    Thank you so much! It was never so easy ;)
    All without keyboard :)

    I see my noob-code-style is totally converted to professional-style :)



  • @BuZz
    One question to your latest coding...

     if [[ -f "/boot/wifikeyfile.txt" ]]; then
                            iniConfig " = " "\"" "/boot/wifikeyfile.txt"
                            iniGet "ssid"
                            local ssid="$ini_value"
                            iniGet "psk"
                            local psk="$ini_value"
                            create_config_wifi "wpa" "$ssid" "$psk"
                            gui_connect_wifi
                     else
    

    The line create_config_wifi "wpa" "$ssid" "$psk" is to create a WPA network. Do you think it makes sense to add a third key to wifikeyfile.txt that sets the encryption? If the value is empty then WPA can be set as default. What do you think?

    I think 99% of all WIFI networks work with WPA so it isn't a important feature.


  • administrators

    Sorry for late reply - must have missed this.

    we could but as you say - does anyone use wep etc now ? It would be an easy change though so I'll make a note.



  • I know this one is marked as [SOLVED] but I have an issue with this function.

    I tried it with image 4.1.
    I created the wifikeyfile.txt with the standard Windows Notepad.
    Windows seperates lines by 0x0D 0x0A. This causes a problem.

    After importing the file the 0x0D is still attached to the ssid + psk and the connection fails.
    0_1479035280720_RetroPieV41-problem.png

    I guess there are a lot auf Windows-Users and perhaps it is possible to remove the 0x0D to solve this issue.


  • administrators

    @RetroProgramming use notepad++ with Unix line endings



  • I know what to do, but do you really want to tell every avarage Windows-User to install an extra tool to edit this tiny file?


  • administrators

    I will sort it.


  • administrators

    Should handle CRLF files now.



  • Thanks for adding this great feature so we can configure wifi networks without a keyboard! At the moment you can only connect to one wifi network with the script, would it possible to reprogram it to define a number of wifi networks to choose from? I would like this feature as sometimes I want to take my retropie to a friend's house or use the wifi hotspot on my phone and this would save bringing a keyboard along.

    Thanks again,
    DP


  • administrators

    @DP That is beyond the scope of what I think would be useful for most people vs effort to implement. If you want to preconfigure your system for multiple wifi networks you can do so manually by editing /etc/wpa_supplicant/wpa_supplicant.conf and add some additional network blocks.



  • @BuZz That's fair enough. Thanks for the suggestion, I was able to pre-configure my wifi networks manually although I had to set update_config=0 otherwise the file would get overwritten. It seems like a bit of an oversight that when switching networks it always asks for a psk even if it already provided within wpa_supplicant.conf but it works for my purposes now so I'm happy!

    Thanks for your help!



  • @DP Sorry for being late .... you can modify the bash file I've created in first posting.
    This will append wifi settings to wpa_supplicant. The PW will also be hashed btw...

    The solution @BuZz created is a fine (to be true finest) way to connect to network. After network is established you can do anything you want.... for example create a bash file by yourself to add more networks and just put it in ES config menu :)



  • @BuZz said in [SOLVED][Feature Request]Wifi Key import via /boot/wifikeyfile.txt:

    Should handle CRLF files now.

    Thanks, looks good now.



  • For info:
    you can use this side to create hashed keys
    https://www.wireshark.org/tools/wpa-psk.html

    Just enter SSID and PW and it will generate hashed key.
    Knowledge is power!



  • Guys. There is no obvious explanation as to how or where to put this file. I see the scripts an that is it. I am not able to use the pi finder utility. I am trying to manually add the wifikeyfile.txt. How?


  • administrators


 

Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.