I'm trying to follow the instructions on this blog to get a private Ethereum network running on my Windows machine. https://btcblockchain.wordpress.com/2017/09/27/how-to-run-private-ethereum-blockchain-on-windows/ Maybe later I'll try Docker in the future, but for now I just want to follow this blog. This example requires having two chain in two different folders; I ran the command to setup the genesis.json on each, and that ran fine.


Fatal: Error starting protocol stack: listen udp :30303: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

I've seen variations of this issue on this site, but usually with Mist wallet.

My directories are slightly different from that blog, so these are the two commands I ran.

 geth -datadir="e:\Ethereum\ParityWinDev\node1" -verbosity 3 –port 30301 –rpcport 8101 –rpc –rpcapi eth,web3,personal,net –identity “MyNode” –networkid 2001 console

This is still running in a command window when I try the second one below.

 geth -datadir="e:\Ethereum\ParityWinDev\node2" -verbosity 3 –port 30302 –rpcport 8102 –rpc -rpcaddr "" -ipcdisable -networkid 2001 console

I don't understand why it's complaining about port 30303 when I specified 30302. I've seen other samples where people use --port as well, so not sure why this sample had just one dash in front of the word "port".

There is no ipc file in any of the node1 subdirectories.

Note: I was running Parity Wallet on the production node at the same time. I killed those processes, and got same error.

Update 1: Adding screenshot from Resource Monitor showing ports: enter image description here

  • I tried on windows 7 with geth v1.7.3 and it works as expected. I'd suggest to use process explorer or similar and search for port 30303, perhaps another process has it open.
    – Ismael
    Jan 8, 2018 at 20:28
  • But why 30303 when I specified 30301 and 30302? Jan 8, 2018 at 21:24
  • The geth on Node1 is the problem. I used Resource Monitor to see the ProcessID and then saw the ProcessID was Geth. When I did Cntl-Break to stop geth.exe the ProcessID went away. I could then start Node 2, but would get same error when I start Node 1. So I still don't understand how to correct this. Jan 8, 2018 at 21:40
  • Added screenshot from Process Monitor to bottom of original question. Does node even need a Listener? Is that what -ipcdisable is supposed to do, not run a listener? Jan 8, 2018 at 21:46

1 Answer 1


Solved. I believe there was a web formatting/copy-paste problem with the double-dashes. The two dashes were being treated as a slightly different character. I replaced with double-dashes and now both nodes running.

geth --datadir="e:\Ethereum\ParityWinDev\node1" --verbosity 3 --port 30301 --rpcport 8101 --rpc –rrpcapi eth,web3,personal,net --identity “MyNode” --networkid 2001 console

  geth --datadir="e:\Ethereum\ParityWinDev\node2" --verbosity 3 --port
 30302 --rpcport 8102 --rpc --rpcaddr "" --ipcdisable
 --networkid 2001 console

Apparently datadir works fine with one dash or the other character. I'm using a tool called "cmdr" as well. When changing the copy/paste dash and typing a real dash, I saw the character shape was actually different, as shown here: enter image description here. So most likely, my port overrides were being totally ignored. And now in Resource Manager I see geth.exe using 30301 and 30302.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.