Guide To…Direct Network Connection

Raspberry Pi Remote Connections – Without A Network!

No keyboard or screen available for your Raspberry Pi, but you have a laptop?

There are often times when a HDMI monitor is not available to use with your Raspberry Pi.  In those circumstances it can be very useful to remote connect using a nearby network and a laptop (see the Guide to…Remote Connections).  However, sometimes there isn’t a network available either!

So how can we make use of a laptop screen and keyboard when there is no network?

As discussed previously (in the Guide to…Remote Connections), there is the option of using a (console) TTL-serial cable, however this only provides rather slow access.  The serial connection won’t support X11 (which as we have seen, allows us to run graphical programs too), and you won’t be able use VNC or shared folders if you have them setup.

The answer is a simple network cable!

Connect and use your Raspberry Pi with just a Network Cable, SDCard and Power!

Connect and use your Raspberry Pi with just a Network Cable, a standard Imaged SD Card and Power!

It is advisable to set this up before you need it so you can be sure that it is configured and working correctly.  As long as you have an SD-Card reader available, you can switch between the configurations using a laptop (or directly on the Raspberry Pi if you have a screen/keyboard at the time).

Remember if you need the wired network for your computer (i.e. to get internet) then you shall have to make a choice about which one you wish to use (or get an extra network port by adding a USB network dongle).  If you use wireless connections, then you can still have both!

Any standard network cable should be suitable (needs to have a male RJ45 connector on each end), most cables available will be fine for our needs.

Note: You can use a normal network cable since the Raspberry Pi LAN chip is smart enough to reconfigure itself for direct network connections (in the past older computers would have needed a special “cross-over” cable).

Note: These instructions are only applicable to manually installed installations (i.e. those which are imaged directly using SDimager rather than using NOOBS. Unfortunately, if you use NOOBS the OS boot partition is moved and is no longer directly accessible from windows. You will need to either image your card manually or use a linux computer/LiveCD/Virtual Machine to access the OS boot partition and edit the cmdline.txt file directly.

You can also use the Pi-Kitchen, see Recipe 001-Direct Network for more details.

I’ve also created a cut-down version of the instructions for more advanced users who won’t need all the details:
In A Nut Shell…Direct Network Connection

How to use a direct network cable

What are we trying to achieve?

A good way to remotely control a Raspberry Pi is to connect it to a network and use one of the methods discussed in the Guide to…Remote Connections.  This will provide access to the terminal, by usig SSH, even the ability to view the desktop using VNC, or the ability to run graphical programs as if they were running directly on the laptop itself (see below for X11 Forwarding).  We just need to make the network link work directly without requring a full network setup (with Router etc).

Making a network connection work

Normally, if you take a Raspberry Pi and directly connect it to a network, it will attempt to automatically find an IP address (see bottom of the page for information about IP Addresses and what they are) by requesting one from your Router or other device running a DHCP server (a protocol which automatically deals out addresses to computers as they attach to a network).

However, if you connect the Raspberry Pi directly to another computer, not a lot will happen.  The Raspberry Pi won’t get an IP Address since there isn’t a DHCP server to talk to (it can’t talk to anything other than the laptop).

Other computers will often give themselves a default address (in the address range – but the Raspberry Pi doesn’t do this (yet).  Besides even if the Raspberry Pi did, we would still need to know what address it had picked to be able to connect to it!

To get around this, we have to give the Raspberry Pi a fixed IP address (i.e. we tell it what it’s IP Address should be so it doesn’t have to wait for one).

There is just one complication to this, and that is if your laptop is configured to a fixed IP too.  At first this may not seem like a problem, since if both IPs are fixed then we will know the address of both computers every time.

However for them to be able to talk to each other directly, they need to have similar addresses (at minimum the first number should match, but we shall match at least the first 2 in this case to work with default network settings).  For more information on this, see the section at the bottom of the page about SUBNETs.

Step 1 – Find the Laptop’s Network Settings

Before we power up our Raspberry Pi, we can have a look at the network settings of the computer we are planning on connecting to and determine if the address is automatically allocated or fixed.

Windows Instructions:

  1. From the Start Menu, run the “Control Panel”.

(Windows 7/Vista) Open “Network and Sharing Center” and click on “Change adapter settings” on the left side.

(Windows XP) Open “Network Connections”

  1. Find the item which relates to your Wired network adaptor (by default this is usually called “Local Area Connection”).
Locate the Wired Network Adaptor "Local Area Connection"

Locate the Wired Network Adaptor “Local Area Connection”

  1. Right-click on it and open “Properties”.
Network Properties Window, find the TCP/IP Entry

Network Properties Window, find the TCP/IP Entry

  1. Select the item which is called “Internet Protocol (TCP/IP)” or “Internet Protocol Version 4 (TCP/IPv4)” if there are two (the other is Version 6), and open the “Properties”.
Wired Network Adaptor is configured as Automatic

Wired Network Adaptor is configured as Automatic

Hopefully, the IP Address will be set to “Obtain an IP address automatically”.  If not don’t worry, just take a note of the IP address and Subnet Mask set here (you may find the rest of the information useful to keep, but we won’t need it this time).  If you know what you are doing, you can change this setting to automatic, or you can leave it alone (we shouldn’t need to adjust it as long as we know the IP Address).

Mac and Linux:

You will need to locate the settings for your wired adaptor and check to see if the IP Address is configured automatically, or fixed to a specific value.

To get to network settings on Mac OS X:
1) Load System Preferences.
2) Click Networks.

Wired Network Adaptor is configured as Automatic

(MAC) Wired Network Adaptor is configured as Automatic


Step 2 – Setting the Raspberry Pi’s IP address

Option 1: Quick Setup / Setting up when you don’t have a monitor

This quick method skips all of the testing which can be performed if we have a Raspberry Pi running with a monitor and keyboard attached.  If you run into problems, then follow the steps in Option 2, to test the network settings.

1. Ensure the Raspberry Pi is powered off, and remove the SD-Card.

  1. Insert the SD-Card into a card reader and plug it into your laptop.

  2. Find the drive and you should find several files on the Card (note it a lot smaller than you’d expect since it is only the boot section of the Card (the rest is hidden)).

  3. Make a copy of cmdline.txt and rename it cmdline.normal

  4. Edit cmdline.txt and add the IP address at the end (be sure you don’t add any extra lines).

For network settings where the IP address is obtained automatically, use an address in the range 169.254.X.X ( –


For network settings where the IP address is fixed, use an address which matches the laptop/computers address except the last one.


Ensure you take note of this IP address (you will need it every time you want to directly connect to the Raspberry Pi).

  1. Make new copy of cmdline.txt and rename it

  2. To swap between configurations, just replace cmdline.txt with either cmdline.normal or (or use the commands in Option 2 to do it directly on the Raspberry Pi – the change will take effect next time you power up)

  3. Return the card to the Raspberry Pi.   Attach the network cable attached to both the computer and Raspberry Pi and power up.


  1. You will need to wait for your computer to finish detecting the network settings (you may see a small networking icon flashing in your system tray while it does, or open up the network settings to see when it has finished and has an IP address) – it can take around 1/2 minute.  Your computer may report the connection as  “limited or no connection” when connected to the Raspberry Pi in this way, this is normal as indicates it is a direct computer to computer connection rather than a standard network.

  2. If you forget or decide not to plug in the network cable, the Raspberry Pi will wait 2 minutes (or until you connect the cable) before completing it’s start-up (so if you only have a keyboard and monitor attached, you need to wait!).

  3. If you are using multiple wired network adaptors (i.e. Using an extra USB-LAN dongle) on your computer you may find you have to unplug the other network cable and reattach afterwards (my Windows XP machine needed this before it would connect through the direct link).

Option 2: Set-up using a monitor and keyboard (i.e. before you really need it):

You will now see that having a keyboard and monitor available at this stage is helpful for when we set this up, as we can test each step.

  1. Boot up the Raspberry Pi and plug in the network cable to both machines.

  2. When the Raspberry Pi has booted ensure you log in and open the terminal if not already open.

Type the following:

hostname -I

You will probably find that nothing is shown, as this is trying to show you the current IP address (which is not allocated yet).  If it does show something, then you may have already have a fixed IP address (if you do take note of it in case you need to put it back later).

  1. Now set the new address as follows:

For network settings where the IP address is obtained automatically, use an address in the range 169.254.X.X ( –

sudo ifconfig eth0

For network settings where the IP address is fixed, use an address which matches the laptop/computers address except the last number.

sudo ifconfig eth0
  1. We can check this has worked by rechecking the IP address:
hostname -I

You will see we now have the IP address set.

We should now be able to “ping” the laptop.

  1. Find the laptop address (if it wasn’t a fixed address) by returning to the list of Network Adaptors in windows and double clicking on the icon to see it’s “Status” (don’t worry about the warning of “limited or no connection”).

Then select the “Support” tab and then “Details”.  You should see the laptop’s IP address.


We should get lots of responses (the laptop is responding the Raspberry Pi through the network cable)!  Ctrl+C to stop that.  (If you didn’t then double check your connections and the IP addresses you are using).

As mentioned before, the new IP address will be lost when we reboot, so we need to ensure it is set every time we boot (or at least every time we want it to be when we boot).

To do that we can edit the “cmdline.txt” file which is located on the boot partition of the SD Card.

  1. Make a copy of the file, with the following command:
sudo cp /boot/cmdline.txt /boot/cmdline.normal
  1. Next edit the original file using nano:
sudo nano /boot/cmdline.txt

At the end of the long line, add the following (you will need to add a space between the last item and “ip”:


Ctrl+x and y to save and exit.

  1. Make a copy of this file too:
sudo cp /boot/cmdline.txt /boot/
  1. You can now reboot the Raspberry Pi (sudo reboot), and next time the IP address will be automatically set.

  2. To change between configurations, simply use the following commands (just remember to edit  /boot/ if you need to change the IP address in future).

sudo cp /boot/cmdline.normal /boot/cmdline.txt
sudo cp /boot/ /boot/cmdline.txt


Now you should be able to do most of the things you would normally do when connected to a network.  It is even possible to use this direct network link to share your laptop/computer’s internet connection (if it is connected via Wifi for example), although I’ve not needed to do this yet.

One VERY useful thing to do is to set up “Putty” and “Xming” to allow you to control the terminal and graphical programs directly from your laptop/computer.

Scratch running nicely inside a window!

Scratch running nicely inside a window using X-11!

See the main Guide to…Remote Connections for links for how to set-up VNC and shared folders, and X-11 on other computers.

Step 3 (recommended) – Install Putty and Xming Server (for SSH and X11)

I am assuming you are using the latest version of Raspbian which has SSH and X11 Forwarding enabled by default (if not see the bottom of this post to enable them if things don’t work).

1. Install and run a X-Windows server on your computer

Download and run from the Xming site.

Follow the installation, including installing “Putty” if you don’t have it already.  You can also download “Putty” separately from

An alternative X-Windows server is available called mobaxterm, this provides a little more control, keeps your X-Windows together and handles your sessions etc.  You can get it from  (Thanks to Mike for this tip).

2. Ensure your SSH program (Putty) has X-11 enabled.

In the PuTTY configuration, find “Connection”, “SSH”, “X11″ and tick the check-box for “X11 forwarding”.  If you leave the X display location blank, it will assume the default “Server 0:0″ (you can confirm the server number by hovering your mouse over the Xming icon in the system tray when it is running).  You can save your set-up within Putty so you will won’t have to do this each time.

Putty Configuration for X11 Forwarding

Putty Configuration for X11 Forwarding

3. Enter the Raspberry Pi’s IP Address

Putty Configuration for IP

Putty Configuration for given IP

Enter the IP Address of the Raspberry Pi in the Session settings above (you may also find that you can use the Raspberry Pi’s hostname here instead (default: raspberrypi)).

Save the setting using a suitable name (RaspberryPiDirect) and press “open” to connect to your Raspberry Pi.  You will likely get a warning pop-up stating you haven’t connected to the computer before (allows you to check you have everything right before continuing).

All being well, you should be greeted with a prompt for your username and password (remember the defaults are pi and raspberry).

4. Using X11 and Xming

Ensure you have Xming running, by starting the Xming program from your computers start menu and then in the terminal window, type a program which normally runs within the Raspberry Pi desktop (such as “leafpad” or “scratch”).  Wait a little while and the program should appear on your computers desktop (if you get an error you have probably forgotten to start “Xming”, so run it and try again).

  1. If you want to run an X program, but still be able to use the same terminal console for other stuff, you can run the command in the background with &:

i.e. leafpad &

Just remember that the more programs you run, the slower everything will get.  You can switch to the background program by typing “fg”, check for background jobs with “bg”.

  1. You can even run a full desktop session through X-11, although it isn’t particularly user-friendly and VNC will produce better results.  To do this you have to use “lxsession” instead of “startx”.

  2. If you get the following error (or similar) when running PyGame or Tkinter scripts:

_tkinter.TclError: couldn't connect to display "localhost:10.0"

Use the fix below:

cd ~
sudo cp .Xauthority ~root/

More details and links are in the main Guide to…Remote Connections.

Additional Information / Troubleshooting

  1. To switch on (or off) SSH you can access raspi config (just type “sudo raspi-config” from the terminal) and select SSH in the menu (it seems like SSH is already enabled by default for some distros).
Enable/Disable SSH via Raspi-config
Enable/Disable SSH via Raspi-config
  1. Ensure X-11 forwarding is enabled on the Raspberry Pi (again, a lot of distros now have this enabled by default).

Use nano with the following command:

sudo nano /etc/ssh/sshd_config

Look for a line in the /etc/ssh/sshd_config file which controls X11Forwarding and ensure it says (with no # before it):

X11Forwarding yes

Save if required (ctrl+x,Y, enter), and reboot:

sudo reboot

Using cmdline.txt for Other Network Settings

The ip= command-line option allows us to specify the network settings when the “kernel” is loaded (the core of the linux system), it’s full options are in the following format (allows us to set every aspect of the network if required):


More details of what each part means and other kernel options is detailed in section 2 of this kernel documentation.

Easy Changing with a Simple Script:

The following script will prompt to allow you to change your settings (just type ./ to run).

To create the file, you can use nano:


Just press ctrl+x and y, to save and exit when you are done.


#Function to swap to Direct IP Address
direct () { sudo cp /boot/ /boot/cmdline.txt;}

#Function to swap to Normal Automatic IP Address
normal () { sudo cp /boot/cmdline.normal /boot/cmdline.txt;}

# Menu using case-esac
echo "Select IP Address? Use Direct or Auto or Keep (d/a/-)?"
read answer
case $answer in
 d|D) echo Use Direct IP;direct;;
 a|A) echo Use Auto IP;normal;;
 *) echo Keep - No Change;;

echo cmdline.txt
echo ____________
cat /boot/cmdline.txt

You could even extend this to allow you to setup fixed IP addresses for different networks, so you can always be sure you can find your IP and connect correctly.

What is an IP Address / Hostnames / Pinging / Subnets?

An IP Address is like your phone number or post code, it simply allows other computers to find that particular computer in the network and ensure any messages it sends goes to that one in particular.

Often, IP Address’s can be replaced with hostname’s so that we can ask for a specific computer without knowing all the numbers (like the contacts list on your phone, the computer looks up the name and uses the number for you).  For instance,, is a hostname, where it’s IP address is (probably depending on where you are).  We can “ping” the address using the following command, which simply sends some short messages to see if there is another computer on the other side to respond to them.





Networks use subnets to help handle the fact that there could be a HUGE number of computers on a network (like the internet) and it would be impossible for a computer to listen to and respond to any computer in the address range to

To handle this, networks will use a subnet mask, this ensures that a computer only needs to respond to computers with are within the same SUBSET, which is defined by the SUBNET MASK setting.

The mask is a series of flags which defines which range of addresses the computer will respond to (by filtering out any which are not within the allowed range):

Means it will respond to computers which have IP addressing matching at least the 3 first numbers.  So a computer with an address of and subnet mask of will only talk to other computers with addresses in the range (except 90 of course!).  Large networks often use SUBNETs to split up larger networks into sections so that they run more efficiently.

Note: You will not be able to set the SUBNET MASK to wider than  The Raspberry Pi defaults to a subnet mask of, which is perfect for most situations.



Steps to check:
1. Check the IP address which get set on both machines (both should be in range 169.254.x.x).

On RPI use one of the following commands:

hostname -I

On PC use the following (or look it up from the Network & Sharing Center and look at the adaptor properties):

  • If this fails, check the cmdline.txt file is right/cable connected etc.  You can use the following to force the IP address on the RPI (for testing the rest – but this won’t be set next time you reboot):
sudo ifconfig eth0
  1. Check you can ping each of the addresses from the other computer (where should match the computer you want to talk to).  Test both directions.
  • If this fails, check PC’s firewall and disable wifi (sometimes the ping command will try using the PC’s wifi instead)
  1. Check you can connect via SSH (using putty)

- This should work if you can already ping the other machine (it is unlikely to work if you can’t ping it).



Thanks to fellow MagPi – Colin Deady for testing out on Mac for me.

Thanks to the following sites for providing various parts of the puzzle (in no specific order): – kernel documention

  1. Arun says:

    Hi.looks like someone else is having the same issue.Here are the steps I tried. I connected the RPi to my laptop(tried with both wi-fi and without it too), tried manually setting an ip address for the laptop and tried obtaining ip address automatically.Tried setting the ip address for my devices including the pi in the router so it would be auto-allocated. tried swapping the cable ends and even the cable. tried it on a different laptop.tried it with general cables and cross line cables. The laptop just does’nt recognise the device strangely.. I usually wait for more than 10 mins just to see if any establishment of connection. When I try to ping the device, i either get destination host unreachable or it just times out.

    • It does work promise! :D
      What OS are you using?
      Do you have Windows firewall enabled or any others?
      Can you remote connect through the normal network?
      Only found one computer (mac) it didn’t work on and didn’t have chance to find out why.

      • Arun says:

        I am using Windows 7 Ultimate and i did try without the firewall too.same result. I am trying to connect it through a Linux Distro now. Thought of using Ubuntu but as far as the previous comments go, Ubuntu makes things harder. Please suggest me a Linux distro you think that works fine with the connection.

      • I shall try a ubuntu live cd tonight and see what happens. I am starting to suspect that it could be the LAN adaptor which is the issue, everything else seems like it has been ruled out.

      • UPDATE:
        Didn’t have ubuntu just Slax. Result was it didn’t allocate an IP address just had Setting the RPi to didn’t work (although ping did, ssh didn’t).

        But manually setting the static IP to (when the RPi was set to worked fine…static IP might be the way to go if IP isn’t allocated.


      Not sure if the below help
      a) Run WindiskImager as administrator
      b) Also there is a blank line at the end of cmdline.txt by default. Do not delete this line.

      I also had the unreachable host issue. After following the above two steps, the unreachable host issue was resolved for me.

  2. Enol says:

    Hi, thanks for this guide. I just got my first raspberry pi then followed the steps here and booom!!!! it worked just fine.

  3. JackP says:


    I’ve tried with Windows and putty gets frozen when attempts to connect to the ip included in cmdline.txt, after an error message appears saying “timed out”. Ip adress is obtained automatically and I ensured that there are just two lines in cmdline.txt with no blank lines between them. I have not found anything that works on previous comments.

    any clue?

    thanks in advance!

  4. JonD says:

    Hi, I’m using a Mac (Mavericks), have downloaded Xquartz, added Putty etc and can ge through to the Pi, which is new today. I’ve plugged the Pi in to my TV and it works fine, have changed the password etc. However, when I try to logon using the Mac the Pi username and/or password aren’t correct. They work fine when I boot on to the TV, so the login is correct on the Pi. Any ideas? Have also tried typing the password in to the username field and it displays correctly, so no strange keyboard entry issues. Thanks in advance

  5. haziq says:

    hey i tried your method and i gave my rpi an ip address and everything worked fine :) but now i want to connect my ip to internet and somehow its not connecting !!! i think there may be some problem because of fixing the ip !!!! can you help with it ????

  6. Walter says:

    Like someone said, the guide worked “out of the box”, without any further googling…
    Thank you very much for the time and the effort you spent in writing this guide.

  7. Agustin says:

    Great! Thank you very, very much!

  8. haziq says:

    hey meltwater2000 everything is working fine now :) thank you so much for you help buddy <3 now i also have used ics but i am a bit greedy you see :P now i wanna learn to use ethernet port for display on my laptop and use a usb dongle for wireless connection for internet ….. as far as my knowledge is concern i think there will be a conflict in ip !!! see for display we have fixed an ip and using this ip to connect to laptop through ethernet so now when we connect rpi with wireless dongle to router for internet , the router will try to give an ip to the rpi but the rpi has already a fixed ip which would be different from the one that router would give dynamically !!!!!! am i right ?? if yes what would be the solution?????

    • In theory you should be ok since you get an ip for each network adaptor. Recommend getting wifi working without direct connection, and then give it a try!
      The main issue I think is how does it know which one to use for internet.

      Good luck.

  9. JC1 says:

    I don’t see any file on the flash card named “cmdline.txt”. I’m frankly having persistent doubts that I’ve created my NOOBS_v1_3_4 SD card properly, even though I’ve followed the included documentation to the letter. I wish I could verify that I have an actual working Pi SD card, but I don’t have a separate keyboard and monitor and was hoping to use this method to get around that. Catch-22. Ugh . . .

  10. Fin_H says:

    can you provide me with a solution so that i can pass the internet connection of my mac through the cable to the pi, because at the moment i cant use the internet on the pi with this set up

  11. I followed your tutorial and am successfully using it with putty and xming on my windows 8 laptop directly with an ethernet cable connected between my laptop and pi. But the problem with which I am stuck currently is not being able to use internet on my pi (using with xming gui). I have shared my wifi connection over ethernet which alloted an ip to my pc which I have changed to which is my actual id to be used in my college lan network. I am using ssh login directly via a single ethernet cable because ssh port 22 is blocked in our college lan network. I also have to put these things along with my PC’s ip

    Ip Adress:
    Subnet Mask:
    Default Gateway:
    Preferred Dns server:
    Alternate Dns server:
    So, after choosing to share wifi over ethernet I have changed the alloted ip(.137.1),Mask,Gateway… to above mentioned adresses

    Then coming to pi I have made my pi’s ip static with ip

    Then I have changed the /etc/network/interfaces to static as follows….

    auto lo

    iface lo inet loopback
    iface eth0 inet static


    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
    as suggested in some other threads…

    I am able to ping (my pc) from pi using putty and also (my pi) using command prompt on my pc. But I am not able to ping or any other ip other than series …

    Is something related to port 22 blocking or is there something else to do or something wrong I have done? The wifi shared was actually shared by another PC connected to the same lan server (Ip with connectify-me software. So does that affect it. Also note that I am able to surf internet on my pi with a monitor connected for display via HDMI (I dont have access to this now)

    • Networks are hard to diagnose via messages, and I’m not a network expert by any means.
      1. Try it first with the allocated settings before you change things – always easier to change once you are sure everything else is working.
      2. The subnet mask may need to be for it to use the DNS addresses you have set.
      I don’t think Port 22 will cause an issue with SSH but shouldn’t cause problem with ping, again check if you can ping using other machines.

  12. thank u for your reply…. I figured out that i did not append the ip of my pc in cmdline.txt file…
    Its working…

    • Always glad to hear it is working.

    • gowrav says:

      Hi manjith,I have a similar problem of using my lapto internet connection to raspbeery pi.Could you explain in detail what needs to be done…i have connected laptop-Pi via ehternet cable and could ping each other.Am using wirless internet connection in my laptop,but would like to use internet connection for my raspberry pi from here

      • The summary is as follows:
        1. Enable ICS on PC
        2. Set RPi IP address to one which is similar IP allocated to PC
        3. Set RPi gateway to same IP as PC
        This is what the post should allow you to do.

  13. lulin says:

    “lxsession” is not working for me… I can enter the shell of my Pi using putty, but when I enter “lxsession” I got the error message:”Only one lxsession can be executed at a time”, which was solved by changing the to “Console text console”. Now the error message is gone, but when I enter “lxsession” on my laptop, I still don’t get the GUI desktop started on my PC… Anyone knows how to solve this problem?

    • Ensure you have your Xming server running. I’ve not seen the error message before. If you are creating background processes, ensure you don’t have another running.

      • lulin says:

        Xming is running on my PC, and I can see the “X’ icon in the system tray, when I hover my mouse on it, it shows “Xming Server:0.0″. I can ping from Pi to my PC, and from my PC to Pi, but when I run “leafpad” in the terminal on my PC, it says “leafpad: Cannot open display:”, when I run “lxsession”, it gives “Only one lxsession can be executed at a time”…

      • I wonder if it is similar to the “localhost” error, try using first:
        sudo cp ~/.Xauthority ~root/

      • lulin says:

        Still the same…

      • Odd, unfortunately I’ve not seen this before. Do you normally have it set to auto load the desktop when you power up?

      • lulin says:

        No when I power up it shows the command line interface, the I have to enter “startx” to load the desktop. However, before I load the desktop, if I run “lxsession” on my PC, the error is gone, but nothing happens… if I run “leafpad” on my PC, it gives the same error…

      • I’ll have to test this tonight in case something has changed recently. Although I use X-Forwarding a lot so would have noticed.
        Have you enabled X-Forwarding in Putty and in sshd_config?

      • lulin says:

        Yes I have ticked the checkbox, by the way, how do you save this so you don’t have to check it every time you open Putty? X11 forwarding is enabled in sshd_config by default.

      • Worth checking sshd_config just in case.

        Set it up, then put a name in the “Saved Sessions:” box, and press save. You can then double click to run it!

      • lulin says:

        X11forwarding is enabled in sshd_config. (without # before)
        I just found out that I can start the desktop on the moniter my Pi is connected to by using “startx” on my PC.

      • Ah yes it might start a local desktop fine, although that would be controlled with local keyboard.

      • lulin says:

        If only I could start it on my laptop…

      • Have you managed to get anything to show up via X-Forwarding? I typically don’t use it with the full desktop as it is much quicker with individual applications.

      • lulin says:

        I could use nano for example, I guess I cannot use programs that need to display user interface on the desktop. I got the error message “cannot open display”

      • That sounds very much like it isn’t connecting to the xserver program. I can confirm it later, when I have a Pi available.

      • lulin says:

        On the screen shot, I saw that you entered in Putty, as Pi’s IP address. Where does that IP come from, shouldn’t it be 169.254.x.x? Maybe this is the problem, because I entered as my Pi’s IP…

      • No as long as you are connected via SSH you have the correct IP (yes it is the Pi’s IP). XForwarding works via a standard network and via a direct cable link.

      • Confirmed, if XForwarding and the Xserver isn’t running correctly you get:
        “leafpad: Cannot open display:”

        You can try putting the server info in the box in the putty config, perhaps that will help. Otherwise I wonder if your firewall is blocking the Xserver program.

      • lulin says:

        Where exactly should I put the server info in the putty config? I turned the windows firewall off already, in order ping from the Pi to my PC.

      • lulin says:

        It worked suddenly!! This is what I changed: I right clicked on the Xming server icon in the system tray and unchecked “Hide Root Window”, then used Alt+Tab to switch to the Putty command line window, then I entered “lxsession”, everything just worked fine. Thanks you very much for you help!! :-)

      • Glad you got it working! Shall watch out for that.

      • domagojhack says:

        Hi well Lulin’s fix is not working for me (same problem with “lxsession”, x-forwading is on in ssh_config). Xming and Putty does not communicate on my laptop how can I fix this?

  14. SHREE HARSHA S says:

    Im not being able to edit the in the SD card; it shows write protected., while setting IP Address for raspberry PI.

  15. Tyler says:

    My computer and raspberry pi are now connected together via ethernet. How can my pi now access my computer’s wifi?

  16. Vishal says:


    I recently ordered for a RPi with 512MB with berryboot configured on my SD card.I am able to SSH through putty but it asks for username and password when loin through the same.Have provided username as pi and password as raspberry but every time it says access denied.What can be the issue

    • This could be a firewall issue. I’ve not used Berryboot, but that shouldn’t make much difference unless they have different login details for the distro you are accessing.

  17. rohit says:

    I am facing a issue which I will explain…
    I have allotted IP= to my raspberry pi.(my Ethernet lan address came to be
    when I ping this address through cmd, I get host unreachable message
    also, it pings from and not to what Ip I have allotted to the pi. not clear why.
    (in cmd I am writing- ping
    I have turned the WiFi off and also tried.
    4 or 5 led glow on the screen.
    plz help…badly needed.

    • rohit says:

      plzzzz reply

    • You can check your subnet settings, but they should automatically be
      Confirm the IP has been set on the Raspberry PI (either with hostname -I or view the devices on your router). See if you are able to ping the PC from the RPi, and vice-a-versa.
      Sorry about taking a while to reply, have been very busy finishing off the book.

      • alikkk says:

        IP on pi I m writing by change in cmdline.txt but when I ping is not pinging

      • Can you confirm the IP address has been set on the Raspberry Pi by using a monitor/screen? Ensure you don’t have any errors in the cmdline.txt (should all be on one line, and not have any windows characters in – make sure you use a linux friendly editor rather than notepad).

  18. jim lewis says:

    HI, firstly, thanks for this. Toting my laptop and monitor cable/keyboard/mouse for the pi was a pain (I hooked up to my setup at work to fiddle with the Pi), this is neatly avoided with this how to guide.

    However, flushed with success I had a go at writing the script to automate the IP selection process.

    AFAI can see it is correct, however, when I try to run it I get ‘permission denied’. I’m logged on as Pi/Raspberry which I thought was root level anyway. SUDO./ doesn’t work, neither does simply typing switchip(with or without .sh)

    Any suggestions?

    I’m able to open Xming and Putty sessions no problem.


    • It has been a while since I’ve run that script, perhaps the permissions have changed on the latest versions of Raspbian. I’ll give it a try on my own setup and let you know my results.

  19. Cidtek says:

    What is the power up sequence of the laptop and Pi

    • Typically:
      1. I have the laptop running.
      2. Ensure the settings are correct on laptop and RPi.
      3. Connect the network cable.
      4. Power up the Raspberry Pi.

      If you power up the Raspberry Pi without network cable connected, then it will take about 1-2 min looking for the network before fully booting. I think after that, it will auto-connect if plugged in (although I suggest you test it before relying on it).

  20. Daniell says:

    Hello i installed arch linux latest version on my Raspberry Pi. I append ip address end of cmdline file. I cannot run ssh using putty . Is there any solution ?

    • I’ve not tried it on Arch Linux, it will depend if it uses a similar command-line method on start-up.
      You will have to confirm (using a keyboard/monitor) if the IP is getting set correctly or not.

      If you know the commands to set the IP address in the terminal, you could always set that on startup instead.

  21. Jobo says:

    I am using this configuration and I need to undo it so I can use a monitor with my raspberry pi

    • That should be no problem. This does not change the display settings. The display is set in the config.txt file, located in the same space. [on power up keep pressing shift to start NOOBS and 1,2,3 or 4 if nothing is displayed.

      You can edit the cmdline.txt file from NOOBS, or directly on the Raspberry Pi;
      sudo nano /boot/cmdline.txt

      If you are not using NOOBS you can even edit this file directly on your PC.

      You can then remove the ip=169.254.x.x setting and your network connection should be back to normal.

  22. Snowman7784 says:

    Works great thank you very much!

  23. Chinmay Upadhye says:

    I worked as per your forum’s steps for 3 days, and rectified problems using references in comments & VOILÀ….! it worked.
    Thanks for such great forum.

  24. Chinmay Upadhye says:

    I want to change the boot OS while using remote server. What commands should I use in “LXTerminal” ?

  25. Hrishikesh says:

    Thanks a lot for this great tutorial.

    I followed all the steps given and can ping from both the sides (i.e Raspi and laptop) but ping is showing unknown host. My internet connection is via Wifi on laptop and in sharing mode in Win 8. Any good suggestions are welcome.

    Thank you.

    • Ensure that you have set the PC IP as the gateway and check it is set via ifconfig. Ensure you can ping your router too.
      (I will have to assume win8 sharing mode is the same as ICS in Win7).

  26. Oz says:

    Thanks a lot for this guide; it’s been somewhat helpful, but I’d really appreciate some help here – I’ve followed all these steps completely with a brand new Pi and a Win XP laptop.

    I’ve managed to set the Raspi IP correctly for sure (checked with ifconfig) and I can ping the laptop. But the laptop is not able to ping the Pi, even with WiFi and firewalls disabled completely. What could be going wrong here,

    Thanks so much for your help! :)

    • Oz says:

      Also, note that I’ve got the latest version of Raspbian installed on the Pi, and a USB WiFi dongle in the Pi, just in case that affects it. :)

      • I would suggest keeping it as simple as possible, no other network devices enabled on either computer, checking the assigned IP addresses on each machine. Ensure the IP that is assigned on the PC is in the same address range as the RPI. You can also try setting the IP manually on both. Trying with other setups may also help you isolate what the problem is (and prove which part is working!).

        Networks sometimes can take a fair bit of tinkering to get working if they are being difficult, so it is hard to say what the specific issue is.

        Sorry I can’t be of more help.

  27. theobligingyardstick says:

    I followed the steps and my rPI device was definitely assigned an ip address, but when I try and SSH into my device using PuTTY it claims “Connection Refused”. Running Raspian as it is the only one I know that automatically enables SSH. Why can’t I connect!?

  28. Awesome! Got this working in about 30 minutes. I was using the NOOBS distro so couldn’t edit cmdline.txt from my laptop on the SD card directly. But I did it using method 2 will zero issues. THANKS!

  29. Erwick says:

    Hi I run Windows 8 on my Laptop and cannot juggle with the LAN settings!
    Any workaround?

  30. Dusiue says:

    i plugged my pi into my win 8 laptop but when i try and connect to it using putty it waits 10 seconds then just says connection timed out.
    I tried to ping the and this is what i get:

    Pinging with 32 bytes of data:
    Reply from Destination host unreachable.
    Reply from Destination host unreachable.
    Reply from Destination host unreachable.
    Reply from Destination host unreachable.

    Ping statistics for
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

    Please help!

    • First thing is to confirm your PCs subnet mask is not or you’ll not get anywhere (it’ll ignore any address which isn’t 169.254.105.xx if set to Also you’ll have to check if you have a firewall enabled, that might be blocking it.
      If you have a screen available, see if you can ping from the Pi back to the PC too.

  31. RedFox says:

    It works! It works!
    Thanks so much. Took awhile for someone who is new to this stuff, but it’s a clear and nice guide.

  32. slade says:

    You have the most comprehensive guide out there and I don’t mean to be a pain. Could you review the below and point out what the error is as I cannot connect putty.

    Running Vista.
    Have turned the Firewall Off.
    Have edited cmdline.txt to reflect:

    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait ip:
    *** One line and one space before/after “ip:” ***

    When RPI plugged into laptop, ipconfig shows:

    Link-local IPv6 Address . . . . . : fe80::9478:9781:20e5:30cb%10
    Autoconfiguration IPv4 Address. . :
    Subnet Mask . . . . . . . . . . . :
    Default Gateway . . . . . . . . . : (blank)

    A ping shows:

    Reply from Destination host unreachable (4x)
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

    Correct me if I am wrong, but the laptop is talking to the RPI since there is 0% packet loss, right? What is preventing me from connecting putty? I can fire up putty when I just connect the RPI to my router and SSH remotely, but haven’t been able to connect it directly to his laptop.

    • The last bit should be ip=
      Hopefully that is the problem! :)
      It is a tricky thing without a screen since you can’t be sure the IP has worked.

      This should be available as a Pi-Kitchen Recipe very soon.

  33. oneasterisk says:

    I found a temporary fix.

    I edited etc/network/interfaces from [iface eth0 inet dhcp] to reflect:

    iface eth0 inet static

    I successfully connected to the RPI from the laptop via Ethernet.

    • Perhaps see how your file is different from the example ones, don’t forget to use a UNIX friendly editor.

      Also Pi-Kitchen Recipe 001 will bake the direct-network files into a new install automatically. Will be posting details soon.

  34. Dirk-Jan says:

    As a beginning programmer, who doesn’t always has acces to an extra screen, this guide was a godsend! thank you so much for writing it in such a way that even a novice like me can use it!

  35. SaberWriter says:

    Raspbian FYI – Your article states that we can remove the SD card from RPi, read it from our windows machine and find the \boot directory and edit cmdline.txt. However, you cannot read those files because they are in the “boot image” and are not accessible. I tried adding the cmdline.txt file directly to the root of my boot image (created using NOOBS) and it doesn’t work. I went over booted up the RPi using my image, traversed to the root, found the \boot directory under there and found the cmdline.txt file. I mv the file to new file name that I could edit via sudo. I then added the ip= to cmdline exactly as you stated. mv the orig file to cmdline.old then mv the new file to cmdline.txt. I shut it down brought it back to my Windows8 (Win8) laptop. Connected the network cable to laptop and RPi then connected power to USB and waited. It recognized it and connected easily using ssh (i’m running vncserver on my RPi). All is good now. So, keep in mind you have to run the actual RPi image to edit the cmdline.txt.

    • The original article was written before NOOBS was created, which as you say, has moved the location of the os boot files. As mentioned in the other articles you can use a Linux computer or live CD or VM to change the files (after the SD card has been installed using NOOBS).
      However you can still write raw images to an SD card, as before without NOOBS and use this method.
      Also, by using Pi-Kitchen we can now inject the required files to where we want them, even before we have installed the OS using NOOBS.

  36. SaberWriter says:

    @meltwater2000 You are correct. I should’ve explained that first of all I really appreciate you explaining how to do this because you’ve made things so much easier and the way you’ve explained it _does_ work fine. It’s just in the case of NOOBs setup that the cmdline.txt file isn’t in the root. I just went and imaged an SD card using the other (direct) method and I saw the cmdline.txt file in the root just as you said.
    Thanks again for explaining how to do this. It works fantastically on my Win8 machine. Great writing and fantastic detailed explanation that you’ve provided. I never would’ve figured this out without your explanation.

  37. Avineshwar says:

    Being able to use our Pi through a PC/Laptop is a cool thing (actually life savers for many without a HDMI display). My point is lets say I am using my lappy to display the Pi and connection is successful and I am able to use it on my lappy and the same lappy is connected to some WiFi network and internet is working fine on it. So, since our Pi is connected to a laptop with an internet connection (WiFi), will it be possible to access internet on the Pi even though we have used an ethernet cable to make the connection with our lappy ?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s