It is possible to reset the Wi-Fi settings of your M2020 printer using Samsung's PSU ("Printer Settings Utility").
Highly inspired from this post, I've ended up moving the required files in the same folder and adding my user to the lp
group.
Download utilities
Fetch the utilities directly from here and extract the archive somewhere.
wget http://downloadcenter.samsung.com/content/DR/201110/20111019151150392/PSU_1.01.tar.gz
tar xzf PSU_1.01.tar.gz
Preparing wirelesssetup
The following shared libraries are needed for the tool to work. Copy or extract the files into the same folder where wirelesssetup
is placed.
I'm running an x64 machine but a similar procedure can be followed for older machines.
libnetsnmp.so.10
copy from PSU_1.01/cdroot/Linux/psu/share/lib64/libnetsnmp.so.10.0.2
libqt-mt.so.3
copy from PSU_1.01/cdroot/Linux/psu/share/lib64/libqt-mt.so.3.0.5
libstdc++.so.5
extract from PSU_1.01/cdroot/Linux/psu/share/libstdc++-5-x86_64.tar.gz
| /usr/lib64/libstdc++.so.5.0.7
Eventually, you should end up with this folder structure:
PSU_1.01/cdroot/Linux/wirelesssetup/bin64
├── libnetsnmp.so.10
├── libqt-mt.so.3
├── libstdc++.so.5
└── wirelesssetup
Add user to lp
group
In order for the tool to communicate with the printer, your user must be part of the lp
group. Check if your user is in the group with:
id -Gn
> lp adm tty dialout cdrom sudo ...
To add your user to the lp
group, use the following commands:
sudo usermod -a -G lp username
newgrp lp
Run wirelesssetup
Make sure that your printer is connected to a USB port. Then list the available devices with:
ls /dev/usb/lp*
To start the GUI tool, run the following command:
LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./wirelesssetup /dev/usb/lp0
If everything went right the tool should start printing several lines in the console and a GUI should pop up.
IOClientUsbEp0::init()
IODeviceLocker::IODeviceLocker(0x7ffcf08e6620,43)
m_isValid=1
devID[120]: <MFG:Samsung;CMD:SPL,URF,FWV,PIC,EXT,DCU;MDL:M2020 Series;CLS:PRINTER;CID:SA_SPLV3_BW;MODE:SPL3,R000105,SCP;STATUS:BUSY;>
IOClientUsbEp0::findUsbDevice(0x7ffcf08e6620)
IOClientUsbEp0::get_usb_bus_address: m_usblp: name=</dev/usb/lp0>
IODeviceLocker::IODeviceLocker(0x7ffcf08e6620,43)
m_isValid=1
INFO: usb_control_msg(,0xc1,0xe0,0x0100,0x0000,0x1428f80,255,5000)
I/O: ep0: HOST>FW: c1 e0 0100 0000 00ff [0 bytes of data]
I/O: ep0: HOST<FW: 404D00000000000C000C402C0000502C...[255 bytes of data]
extDevID[255]: <CMD:PV3,ALL,WSP,CMP,IDS,EPMWSP,WPS,WFD,WWS,NFC1,GCP,AMPV,RDS,APO,WIN8,OTG,SBYOFF,CI_19,URL;>
...
