Since I missed easter last year for an EggDuino project, I started early this year to be right on time. And as I just freaked out by trying to make this project run, I wanted to give you a helping hand, if you find yourself in the same situation.

There are many sites out there with tutorials and faqs. But they all seem to be for Windows or Linux users. Hence I will summarize what I had to do to make the EggDuino work on a Mac with OS Big Sur (11.6.4).

First I followed the install instructions of Evil Mad Scientist. This means

  1. Install the AxisDrawer
  2. Install Inkscape version 1.1.2

So far so good. I decided to use the original EggDuino firmware of Cocktailyogi. Plex3r seems to have a more recent fork, but for the time being cocktail yogi’s version should be ok for me. Please be aware: For the time of writing I did not yet successfully print an egg. I crashed my Arduino and need a spare part, which is in delivery.

At a stage in between I installed plotink, just to realize some hours after, that it also is contained in the installed directories.

In Cocktailyogi’s README he mentions that you need to modify a file named eggbot.py. Ok, but where do I find it? I search almost every directory without success. I even did not understand which Python version was used as there are 2.7 and 3.something installed on my Mac.

So here is the answer: None of them. Inkscape comes with its own installation of Python (3.8 in my case). But this did not answer the question where to find the above mentioned file. Well, first of all, the structure of the EggBot extension for Inkscape has changed. I.e. you do not need to adapt eggbot.py any more. The file you need to adapt is named ebb_serial.py and it is stored in directory

/Users/your_user_name/Library/Application Support/org.inkscape.Inkscape/config/inkscape/extensions/axidraw_deps/plotink

In file ebb_serial.py you need to change functions findPort and testPort. Both have a section in which the port to used is identified:

for port in com_ports_list: 
if port[1].startswith("/dev/cu.usbserial"):
ebb_port = port[0] # Success; EBB found by name match.
break # stop searching-- we are done.
if ebb_port is None:
for port in com_ports_list:
if port[2].startswith("USB VID:PID=1A86:7523"):
ebb_port = port[0] # Success; EBB found by VID/PID match.
break # stop searching-- we are done.

I changed to string comparison above. In the original file port[1] was checked against „EiBotBoard“. But this did not work. I also changed the VID and PID in the seconds if statement to the data of my Nano clone. This was successful. If you don’t know the data, you can print them with the below mentioned Python code.

from serial.tools.list_ports import comports

com_ports_list = list(comports())
for port in com_ports_list:
print(port[0])
print(port[1])
print(port[2])

Just copy the code to a file like port.py and run the file with command

python port.py

Please be aware: The changes mentioned above must be done in two functions to work. You can try now if this already works for you. Start Inkscape and the EggBot extension. E.g. under Setup just press „apply“. If you get an error message, you need to adapt the serial port time out. In function testPort search for line

serial_port = serial.Serial(port_name, timeout=1.0)

and change the timeout value to 2.0. Why do this? The Inkscape extension tests the communication with the EggDuino by sending the version command „v“ to the EggDuino. If EggDuino does not reply within one second you get a timeout. Hence the adaption.

If you still get an error message in Inkscape, please test your Arduino firmware within the Arduino IDE: Upload your Firmware, open the serial monitor and type in „v“ (without the „“). EggDuino should answer with a string like „EBBv13_and_above Protocol emulated by Eggduino-Firmware V1.6a“. Please make sure to set the baud rate to 9600 and CR.

You can also check if the response of command „TP“ is „OK“: