Skip to content

Instantly share code, notes, and snippets.

@LouWii
Last active December 7, 2016 03:55
Show Gist options
  • Select an option

  • Save LouWii/8e1b42db76388fe2c1dd772a749ad47c to your computer and use it in GitHub Desktop.

Select an option

Save LouWii/8e1b42db76388fe2c1dd772a749ad47c to your computer and use it in GitHub Desktop.

Revisions

  1. LouWii revised this gist Dec 7, 2016. 1 changed file with 17 additions and 19 deletions.
    36 changes: 17 additions & 19 deletions modify_file_ftp_windows.md
    Original file line number Diff line number Diff line change
    @@ -6,41 +6,39 @@ Here is what I did on the DRONE-side using a WINDOWS system:
    * Turn on the Drone
    * Connect your Windows device to the WiFi signal of the Remote Control
    * Open a Windows command prompt (Start -> Run -> "cmd")
    * Make note of the current directory for your Command Prompt window. It is typically set to "C:\Users\<your username>".
    * Type in "ftp 192.168.1.2" followed by Enter
    * Type in user name "root" followed by Enter
    * Type in password "Big~9China" followed by Enter
    * Make note of the current directory for your Command Prompt window. It is typically set to `C:\Users\<your username>`.
    * Type in `ftp 192.168.1.2` followed by Enter
    * Type in user name `root` followed by Enter
    * Type in password `Big~9China` followed by Enter
    * You should see a "230 Login successful." response
    * Type in "cd /etc/init.d/" followed by Enter
    * Type in `cd /etc/init.d/` followed by Enter
    * You should see a "250 Directory successfully changed." response
    * Type in "type binary" followed by Enter
    * Type in `type binary` followed by Enter
    * You should see a "200 Switching to Binary mode." response
    * Type in "get rcS" followed by Enter. Note that the S is a capital S...
    * The "rcS" file will be downloaded into the current directory for your Command Prompt window (see step 5)
    * Type in `get rcS` followed by Enter. Note that the S is a capital S...
    * The `rcS` file will be downloaded into the current directory for your Command Prompt window (see step 5)

    **Now we start editing the file on your Windows device...**

    * Start the Notepad++ editor and open the "rcS" file

    Note:
    Do NOT use the Windows Notepad editor (!)
    * Start the Notepad++ editor and open the `rcS` file
    Note:Do NOT use the Windows Notepad editor (!)

    * In Notepad++, using the menu structure at the top of the screen, verify that the file encoding is set to "Encode in UTF-8" (Encoding -> "Encode in UTF-8"). This should already be selected but it does not hurt to verify...
    * Scroll down to line 61 and change it:
    From: `#telnetd -l /bin/ash &`
    To: `telnetd -l /bin/ash &`
    So you remove the #-character from the beginning of the line
    From: `#telnetd -l /bin/ash &`
    To: `telnetd -l /bin/ash &`
    So you remove the #-character from the beginning of the line
    * Now ADD the following lines to the end of the file:
    `iw reg set US`
    `iw dev wlan0 set tx power limit 2700`
    `iw reg set US`
    `iw dev wlan0 set tx power limit 2700`
    * Now save the file and close Notepad++

    **Now you need to upload the modified file to your drone...**

    * Back in your FTP-session... Type in "put rcS"
    You should see a "226 Transfer complete" response
    You should see a "226 Transfer complete" response
    * Terminate your FTP session: Type in "bye" followed by Enter
    You should see a "221 Goodbye." response
    You should see a "221 Goodbye." response
    * Now restart the drone.

    At this point you have modified the drone to enable telnet, set the region to US to enable FCC mode and you have configured the WiFi driver to use a maximum transmit power of 27dbm.
  2. LouWii revised this gist Dec 7, 2016. 1 changed file with 52 additions and 0 deletions.
    52 changes: 52 additions & 0 deletions modify_file_ftp_windows.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@
    **Content from http://www.phantompilots.com/threads/phantom-3-standard-range-mod-lets-do-it-together.80721/page-33#post-874043**

    Here is what I did on the DRONE-side using a WINDOWS system:

    * Turn on the Remote Control
    * Turn on the Drone
    * Connect your Windows device to the WiFi signal of the Remote Control
    * Open a Windows command prompt (Start -> Run -> "cmd")
    * Make note of the current directory for your Command Prompt window. It is typically set to "C:\Users\<your username>".
    * Type in "ftp 192.168.1.2" followed by Enter
    * Type in user name "root" followed by Enter
    * Type in password "Big~9China" followed by Enter
    * You should see a "230 Login successful." response
    * Type in "cd /etc/init.d/" followed by Enter
    * You should see a "250 Directory successfully changed." response
    * Type in "type binary" followed by Enter
    * You should see a "200 Switching to Binary mode." response
    * Type in "get rcS" followed by Enter. Note that the S is a capital S...
    * The "rcS" file will be downloaded into the current directory for your Command Prompt window (see step 5)

    **Now we start editing the file on your Windows device...**

    * Start the Notepad++ editor and open the "rcS" file

    Note:
    Do NOT use the Windows Notepad editor (!)

    * In Notepad++, using the menu structure at the top of the screen, verify that the file encoding is set to "Encode in UTF-8" (Encoding -> "Encode in UTF-8"). This should already be selected but it does not hurt to verify...
    * Scroll down to line 61 and change it:
    From: `#telnetd -l /bin/ash &`
    To: `telnetd -l /bin/ash &`
    So you remove the #-character from the beginning of the line
    * Now ADD the following lines to the end of the file:
    `iw reg set US`
    `iw dev wlan0 set tx power limit 2700`
    * Now save the file and close Notepad++

    **Now you need to upload the modified file to your drone...**

    * Back in your FTP-session... Type in "put rcS"
    You should see a "226 Transfer complete" response
    * Terminate your FTP session: Type in "bye" followed by Enter
    You should see a "221 Goodbye." response
    * Now restart the drone.

    At this point you have modified the drone to enable telnet, set the region to US to enable FCC mode and you have configured the WiFi driver to use a maximum transmit power of 27dbm.

    When the drone is back online, you can use telnet to connect to the drone. I recommend using Putty. When you have established a telnet session to the drone at IP address 192.168.1.2 you can use the command "iwinfo" to see the active WiFi parameters. Look for the line that starts with "Tx-Power:"

    Now, if your drone does not come online anymore you may have made a typo whilst modifying the rcS file. So be careful.

    I hope this helps.
  3. LouWii revised this gist Dec 7, 2016. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions enable_telnet.md
    Original file line number Diff line number Diff line change
    @@ -18,12 +18,12 @@ To avoid more and more user brick the RC/Drone, I discover a new solution to do

    #### 8) make sure nothing wrong then reboot

    by adding telnetd -l /bin/ash to djiled.sh, telnet will start when system boot, so we can use telnet to access rc/drone without touching the important file "rcS". If u make anything wrong in djiled.sh, the wifi still can startup and u can do it again until success (well, that's what I guess, i dont want to try...)
    by adding `telnetd -l /bin/ash` to `djiled.sh`, telnet will start when system boot, so we can use telnet to access rc/drone without touching the important file "rcS". If u make anything wrong in `djiled.sh`, the wifi still can startup and u can do it again until success (well, that's what I guess, i dont want to try...)

    For step 9-14, if your rc/drone are using fcc mode as default, then you can skip it, dont touch the rcS file.
    Use my "channel 13 mod" script at post#266, it will do 27dbm mod for you. so rcS remain as DJI original one make no chance to brick !
    For more detail about "channel 13 mod", take a look at post#199-200
    you can type "iw reg get" to check you are in fcc or ce
    you can type `iw reg get` to check you are in fcc or ce


    #### 9) telnet to 192.168.1.2 (yes, patch drone side first)
    @@ -37,7 +37,7 @@ echo "iw reg set BO" >>/etc/init.d/rcS
    echo "iw dev wlan0 set txpower limit 2700" >>/etc/init.d/rcS
    ```

    PS: you can vi /etc/init.d/rcS to edit by yourself too, don't try if you ask what is vi
    PS: you can `vi /etc/init.d/rcS` to edit by yourself too, don't try if you ask what is vi

    #### 11) `cat /etc/init.d/rcS`
    make sure only new content is added (no diff installed, so you have to check file by yourself)
    @@ -51,8 +51,8 @@ make sure it have execute mode (rwx rwx r_x)

    patch the rcS by telnet at RC/Drone can avoid incorrect EOL format and file changed to non-executable accidentally

    in addition, you can use "channel 13 mod" at post#266, just download and save setchan.sh at /usr/sbin (192.168.1.1 only) then run, default will auto select best channel from 1 to 13 for you.
    You can execute as "setchan.sh 13" to force it to use channel 13 (1 to 13)
    in addition, you can use "channel 13 mod" at post#266 (note: it's the file in this gist), just download and save `setchan.sh` at `/usr/sbin` (192.168.1.1 only) then run, default will auto select best channel from 1 to 13 for you.
    You can execute as `setchan.sh 13` to force it to use channel 13 (1 to 13)


    ---------not suggest to auto start, because need to modify rcS file, u can simply telnet to 192.168.1.1 on your phone and run setchan.sh manually ---------
  4. LouWii revised this gist Dec 7, 2016. 1 changed file with 22 additions and 14 deletions.
    36 changes: 22 additions & 14 deletions enable_telnet.md
    Original file line number Diff line number Diff line change
    @@ -2,14 +2,21 @@

    To avoid more and more user brick the RC/Drone, I discover a new solution to do this mod:

    1) connect RC/Drone
    2) ftp to 192.168.1.1
    3) get `/sbin/djiled.sh` to PC
    4) open it by notepad++ / gedit / vi
    5) add `telnetd -l /bin/ash &` at line 2, you must add at line2 before the while loop started
    6) put `djiled.sh` back to RC, make sure file mode = 775 (rwx rwx r_x)
    7) repeat step 3-6 at 192.168.1.2
    8) make sure nothing wrong then reboot
    #### 1) connect RC/Drone

    #### 2) ftp to 192.168.1.1

    #### 3) get `/sbin/djiled.sh` to PC

    #### 4) open it by notepad++ / gedit / vi

    #### 5) add `telnetd -l /bin/ash &` at line 2, you must add at line2 before the while loop started

    #### 6) put `djiled.sh` back to RC, make sure file mode = 775 (rwx rwx r_x)

    #### 7) repeat step 3-6 at 192.168.1.2

    #### 8) make sure nothing wrong then reboot

    by adding telnetd -l /bin/ash to djiled.sh, telnet will start when system boot, so we can use telnet to access rc/drone without touching the important file "rcS". If u make anything wrong in djiled.sh, the wifi still can startup and u can do it again until success (well, that's what I guess, i dont want to try...)

    @@ -19,8 +26,9 @@ For more detail about "channel 13 mod", take a look at post#199-200
    you can type "iw reg get" to check you are in fcc or ce


    9) telnet to 192.168.1.2 (yes, patch drone side first)
    10) run following command 1 by 1 to patch the rcS, it will make a copy, patch FCC mode, set open channel 1-13 and 27dbm
    #### 9) telnet to 192.168.1.2 (yes, patch drone side first)

    #### 10) run following command 1 by 1 to patch the rcS, it will make a copy, patch FCC mode, set open channel 1-13 and 27dbm

    ```
    cp /etc/init.d/rcS /etc/init.d/rcS.bck
    @@ -31,15 +39,15 @@ echo "iw dev wlan0 set txpower limit 2700" >>/etc/init.d/rcS

    PS: you can vi /etc/init.d/rcS to edit by yourself too, don't try if you ask what is vi

    11) `cat /etc/init.d/rcS`
    #### 11) `cat /etc/init.d/rcS`
    make sure only new content is added (no diff installed, so you have to check file by yourself)

    12) `ls -ltr /etc/init.d/rcS`
    #### 12) `ls -ltr /etc/init.d/rcS`
    make sure it have execute mode (rwx rwx r_x)

    13) repeat step 10 to 12 @192.168.1.1
    #### 13) repeat step 10 to 12 @192.168.1.1

    14) correct me if any step is wrong or missing, then reboot rc + drone
    #### 14) correct me if any step is wrong or missing, then reboot rc + drone

    patch the rcS by telnet at RC/Drone can avoid incorrect EOL format and file changed to non-executable accidentally

  5. LouWii revised this gist Dec 7, 2016. 1 changed file with 64 additions and 0 deletions.
    64 changes: 64 additions & 0 deletions enable_telnet.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,64 @@
    **Content from http://www.phantompilots.com/threads/phantom-3-standard-range-mod-lets-do-it-together.80721/page-15#post-840050**

    To avoid more and more user brick the RC/Drone, I discover a new solution to do this mod:

    1) connect RC/Drone
    2) ftp to 192.168.1.1
    3) get `/sbin/djiled.sh` to PC
    4) open it by notepad++ / gedit / vi
    5) add `telnetd -l /bin/ash &` at line 2, you must add at line2 before the while loop started
    6) put `djiled.sh` back to RC, make sure file mode = 775 (rwx rwx r_x)
    7) repeat step 3-6 at 192.168.1.2
    8) make sure nothing wrong then reboot

    by adding telnetd -l /bin/ash to djiled.sh, telnet will start when system boot, so we can use telnet to access rc/drone without touching the important file "rcS". If u make anything wrong in djiled.sh, the wifi still can startup and u can do it again until success (well, that's what I guess, i dont want to try...)

    For step 9-14, if your rc/drone are using fcc mode as default, then you can skip it, dont touch the rcS file.
    Use my "channel 13 mod" script at post#266, it will do 27dbm mod for you. so rcS remain as DJI original one make no chance to brick !
    For more detail about "channel 13 mod", take a look at post#199-200
    you can type "iw reg get" to check you are in fcc or ce


    9) telnet to 192.168.1.2 (yes, patch drone side first)
    10) run following command 1 by 1 to patch the rcS, it will make a copy, patch FCC mode, set open channel 1-13 and 27dbm

    ```
    cp /etc/init.d/rcS /etc/init.d/rcS.bck
    sed -i 's/GB/OK/g' /etc/init.d/rcS
    echo "iw reg set BO" >>/etc/init.d/rcS
    echo "iw dev wlan0 set txpower limit 2700" >>/etc/init.d/rcS
    ```

    PS: you can vi /etc/init.d/rcS to edit by yourself too, don't try if you ask what is vi

    11) `cat /etc/init.d/rcS`
    make sure only new content is added (no diff installed, so you have to check file by yourself)

    12) `ls -ltr /etc/init.d/rcS`
    make sure it have execute mode (rwx rwx r_x)

    13) repeat step 10 to 12 @192.168.1.1

    14) correct me if any step is wrong or missing, then reboot rc + drone

    patch the rcS by telnet at RC/Drone can avoid incorrect EOL format and file changed to non-executable accidentally

    in addition, you can use "channel 13 mod" at post#266, just download and save setchan.sh at /usr/sbin (192.168.1.1 only) then run, default will auto select best channel from 1 to 13 for you.
    You can execute as "setchan.sh 13" to force it to use channel 13 (1 to 13)


    ---------not suggest to auto start, because need to modify rcS file, u can simply telnet to 192.168.1.1 on your phone and run setchan.sh manually ---------

    if you want to make setchan.sh autorun when boot, use following command at 192.168.1.1

    ```
    echo "sleep 30" >>/etc/init.d/rcS
    echo "setchan.sh" >>/etc/init.d/rcS
    ```

    or, if you want to use channel 13 only

    ```
    echo "sleep 30" >>/etc/init.d/rcS
    echo "setchan.sh 13" >>/etc/init.d/rcS
    ```
  6. LouWii created this gist Dec 7, 2016.
    178 changes: 178 additions & 0 deletions setchan.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,178 @@
    #!/bin/sh
    # I'm not the author ! ->
    # SCRIPT FROM http://www.phantompilots.com/threads/phantom-3-standard-range-mod-lets-do-it-together.80721/page-25#post-855473
    #Auto scan and set unused Wifi channel for Phantom 3 Standard / 4K
    #Author : Gary Kan
    #Date : 20/06/2016
    #Version 1.1
    # 1) Add new user argument option
    # -ch for set channel number, eg. -ch 13
    # -booster will limit RC tx power to 20DBM, to protect your external booster
    # 2) Add Restart udhcp and apsvr
    # 3) Some Minor tweak
    #
    #Date : 21/06/2016
    #Version 1.2
    # 1) Remove user argument option -booster
    # 2) Remove apsvr due to my RC video link sometime get disconnected
    # 4) Change Default DBM from 27dbm to 24 dbm on RC and drone, due to user report his RC is bricked despite of successful application of 27dbm setting, after fifth flight.
    # 3) Add new user argument option
    # -rc will limit RC tx power to your target mbm, eg -rc 2000 = 20DBm, Max = 2700
    # -d will limit DRONE tx power to your target mbm, eg -d 2000 = 20DBm, Max = 2700
    #
    #Version 1.21
    #Date : 21/06/2016
    # 1) Add User changable default dbm

    clear
    DRONE="192.168.1.2"
    SCRIPT=`basename "$0"`
    RCDBM="2400"
    DDBM="2700"


    ###For check User argument
    while [ "$1" != "" ]; do
    case $1 in
    -ch)
    shift
    SCAN="OFF"
    CHANNEL=$1
    ;;
    -rc)
    shift
    RCDBM=$1
    echo "Info : User Limit RC TX Power to $1"
    ;;
    -d)
    shift
    DDBM=$1
    echo "Info : User Limit Drone TX Power to $1"
    ;;
    -h)
    echo "-ch for set channel number, eg. -ch 13"
    echo "-rc will limit RC tx power to your target mbm, eg -rc 2000 = 20DBm, Option = 1700 2000 2400 2700"
    echo "-d will limit DRONE tx power to your target mbm, eg -d 2000 = 20DBm, Option = 1700 2000 2400 2700"
    echo "-h for show this page"
    exit
    ;;
    * )
    echo "Incorrect user argument !!"
    echo "-ch for set channel number, eg. -ch 13"
    echo "-rc will limit RC tx power to your target mbm, eg -rc 2000 = 20DBm, Option = 1700 2000 2400 2700"
    echo "-d will limit DRONE tx power to your target mbm, eg -d 2000 = 20DBm, Option = 1700 2000 2400 2700"
    echo "-h for show this page"
    exit 1
    ;;
    esac
    shift
    done

    ###Make Sure network is ready and Drone side is online
    echo "Checking Connection with Phantom 3 Standard / 4K . . ."
    ping -c 1 -w 60 $DRONE &> /dev/null
    if [ $? -ne 0 ]
    then
    echo "ERROR : Phantom 3 Standard / 4K at $DRONE is unreachable"
    exit 1
    else
    echo "Connection - OK."
    fi


    ###Check unused channel or user argument
    if [ "$SCAN" != "OFF" ]
    then
    for i in 1 2 3 4 5 6 7 8 9 10 11 12 13
    do
    iw dev wlan0 scan | grep "DS Parameter set:" | awk '{FS=" "} {print $5}' | sort -n | grep -x $i &>/dev/null
    if [ $? -ne 0 ]
    then
    echo "Channel $i - Not In Use"
    echo "Set CH to $i"
    CH=$i
    break
    else
    echo "Channel $i - In Use"
    if [ $i = 13 ]
    then
    CH=$i
    fi
    fi
    done
    else
    echo "User Input Channel = $CHANNEL"
    case $CHANNEL in
    1|2|3|4|5|6|7|8|9|10|11|12|13)
    CH=$CHANNEL
    ;;
    *)
    echo "Input Error : Channel must be 1 to 13 !!"
    exit 1
    ;;
    esac
    fi


    ###Setup hostapd-phy0.conf with target channel number
    echo "Trying To Set Channel = $CH . . ."
    sed -i "/channel=/c\channel=$CH" /tmp/run/hostapd-phy0.conf
    echo "Patched `grep "channel" /tmp/run/hostapd-phy0.conf`"
    echo " "


    ###patch drone side to BO, make sure ready for CH12,13, telnet.d must be on in rcS, scan be remove is user set country = BO in rcS at drone side
    echo "Checking Connection with Phantom 3 Standard / 4K . . ."
    ping -c 1 -w 30 $DRONE &> /dev/null
    if [ $? -ne 0 ]
    then
    echo "ERROR : Phantom 3 Standard / 4K at $DRONE is unreachable"
    exit 1
    else
    echo "Connected . . ."
    echo "Patching Phantom 3 Standard / 4K at $DRONE . . ."
    { sleep 1;echo "iw reg get";echo "iw reg set BO";echo "iw reg get";echo "iw dev wlan0 set txpower limit $DDBM";sleep 1;} | telnet $DRONE
    fi


    ###Patch RC Side and restart network
    echo ""
    echo "Patching Phantom 3 Standard / 4K - RC . . ."
    iw reg set BO
    iw dev wlan0 set txpower limit $RCDBM
    sleep 1

    echo ""
    echo "Restarting Services, it may take a moment . . ."
    kill -9 `ps | grep udhcpd | grep -v grep | awk '{print $1}'`
    sleep 3
    kill -9 `cat /tmp/run/wifi-phy0.pid`
    sleep 3

    /usr/sbin/hostapd -P /var/run/wifi-phy0.pid -B /var/run/hostapd-phy0.conf
    sleep 3
    /usr/sbin/udhcpd -S /etc/udhcpd.conf &
    sleep 3


    ###Final Checking, can be remove
    echo ""
    echo "Listing Services . . ."
    ps | grep hostapd | grep -v grep
    ps | grep apsrv | grep -v grep
    ps | grep udhcpd | grep -v grep

    echo ""
    echo "Checking Final Result at $DRONE . . ."
    ping -c 1 -w 60 $DRONE &> /dev/null
    if [ $? -ne 0 ]
    then
    echo "ERROR : Phantom 3 Standard / 4K at $DRONE is unreachable"
    exit 1
    else
    { sleep 1;echo "iwinfo";sleep 1;} | telnet $DRONE
    echo ""
    echo "Checking Final Result at RC . . ."
    iwinfo
    echo "Patch Completed, Enjoy."
    fi