04 December 2012

288. KStar (Australia) 1500 VA UPS on Debian Wheezy with NUT

NOTE: long day and not quite familiar with this yet, so haven't proof-read this post. Your mileage may vary.

Being fed up with the recent frequency of power-outages in our department building I headed off to MSY and picked up a UPS, the KStar BM3150 1500 VA (link). Oddly enough this seems to be an Antipodean-only UPS, as the main Kstar website doesn't list it.

The UPS comes with a USB port, and if you connect it to a computer you'll find that the UPS is recognised as a Lakeview Research product:

lsusb
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0925:1234 Lakeview Research Bus 002 Device 003: ID 0b95:7720 ASIX Electronics Corp. AX88772 Bus 002 Device 004: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub Bus 002 Device 005: ID 04d9:1603 Holtek Semiconductor, Inc. Keyboard Bus 002 Device 006: ID 0461:4d81 Primax Electronics, Ltd
dmesg
[ 424.292130] usb 1-1.3: new low-speed USB device number 3 using ehci_hcd [ 424.389739] usb 1-1.3: New USB device found, idVendor=0925, idProduct=1234 [ 424.390648] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 424.391553] usb 1-1.3: Product: UPS USB MON V1.4 [ 424.392449] usb 1-1.3: Manufacturer: \xffffffd0\xffffff89\xffffff89 [ 424.397491] hid-generic 0003:0925:1234.0004: hiddev0,hidraw3: USB HID v1.00 Device [\xffffffd0\xffffff89\xffffff89 UPS USB MON V1.4] on usb-0000:00:1a.0-1.3/input0
The UPS comes with a CD which contains a full-fledged Windows collection of software, and a pre-compiled shell-only 32 bit binary (need ia32-libs) which is installed via a shell script which needs modification to run properly on Debian. In other words -- it seems to have linux 'support' as a selling point, but not much more. It's so bad that it's not realistically useful.

Googling 0925:124 leads to this post: http://ifireball.wordpress.com/2011/10/13/configuring-aviem-pro2100-ups-on-debian-6-0-stablesqueeze/

The solution below is not particularly elegant -- I compile nut from source to get the udev rules and the richcomm driver, then install the debian nut packages.

cd ~/tmp
sudo apt-get install libusb-dev
wget http://www.networkupstools.org/source/2.6/nut-2.6.4.tar.gz
tar xvf nut-2.6.4.tar.gz
cd nut-2.6.4/
./configure --with-usb --with-dev
Configuration summary: ====================== build serial drivers: yes build USB drivers: yes build SNMP drivers: no build neon based XML driver: no enable Avahi support: no build Powerman PDU client driver: no build IPMI driver: no enable SSL development code: yes enable libwrap (tcp-wrappers) support: no enable libltdl (Libtool dlopen abstraction) support: yes build CGI programs: no enable HAL support: no build and install documentation: no build and install the development files: yes
make sudo make install


Things are installed, but in an non-standard place.
/usr/local/ups/bin/nut-scanner
Scanning USB bus. No start IP, skipping NUT bus (old connect method) [nutdev1] driver = "richcomm_usb" port = "auto" vendorid = "0925" productid = "1234" bus = "001"
sudo ln -s /lib/udev/rules.d/52-nut-usbups.rules /etc/udev/rules.d/52-nut-usbups.rules sudo service udev restart sudo apt-get install nut nut-cgi
Edit /ect/nut/ups.conf
[kstar] driver=richcomm_usb port=auto desc='kstar'
Edit /etc/nut/nut.conf
MODE=standalone
Edit /etc/nut/upsmon.conf
MONITOR kstar@localhost 1 upsmon myups master
Edit /etc/nut/upsd.conf
[upsmon]
password=myups
upsmon master
Then restart the nut server
sudo service nut-server restart
ps aux|grep nut
nut 3594 0.0 0.0 16764 592 ? Ss 18:00 0:00 /lib/nut/richcomm_usb -a kstar nut 7179 0.0 0.0 16764 592 ? Ss 18:29 0:00 /lib/nut/richcomm_usb -a kstar nut 7182 0.0 0.0 16900 568 ? Ss 18:29 0:00 /sbin/upsd
upsc kstar
device.mfr: Richcomm dry-contact to USB solution device.model: UPS USB MON V1.4 device.serial: unknown device.type: ups driver.name: richcomm_usb driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.6.4 driver.version.internal: 0.04 ups.mfr: Richcomm dry-contact to USB solution ups.model: UPS USB MON V1.4 ups.productid: 1234 ups.serial: unknown ups.status: OL ups.vendorid: 0925


Errors:
I'm leaving the various errors here more or less as link-bait. I tried using the NUT in the debian repos, and it gave me nothing than pain.

It's not nicely formatted or anything. Basically, if you see any of the crap below, compile your own version.

./configure --with-drivers=richcomm_usb --with-statepath=/var/run/nut --with-pidpath=/var/run/nut --with-user=nut --with-group=nut
Configuration summary: ====================== build serial drivers: yes build USB drivers: yes build SNMP drivers: no build neon based XML driver: no enable Avahi support: no build Powerman PDU client driver: no build IPMI driver: no build Mac OS X meta-driver: no enable SSL development code: yes enable libwrap (tcp-wrappers) support: no enable libltdl (Libtool dlopen abstraction) support: yes build nut-scanner: yes build CGI programs: no enable HAL support: no build and install documentation: no build and install the development files: no only build specific drivers: richcomm_usb
make sudo make install

Now try to load the driver:
sudo upsdrvctl -u root -D start
Network UPS Tools - UPS driver controller 2.6.4 0.000000 Starting UPS: kstar Network UPS Tools - Richcomm dry-contact to USB driver 0.04 (2.6.4) Warning: This is an experimental driver. Some features may not function correctly.
and it didn't really work. Checking dmesg
[282263.171108] usb 1-1.3: usbfs: interface 0 claimed by usbhid while 'richcomm_usb' sets config #1

and looking at
ls /sys/bus/usb/drivers/usb/1-1.3/ -lah
lrwxrwxrwx 1 root root 0 Dec 1 10:09 driver -> ../../../../../../bus/usb/drivers/usb
means that the device already has a driver loaded, so
sudo su
echo -n "1-1.3" > /sys/bus/usb/drivers/usb/unbind
exit
ls /sys/bus/usb/drivers/usb/1-1.3/ -lah
ls: cannot access /sys/bus/usb/drivers/usb/1-1.3/: No such file or directory
sudo upsdrvctl -u root -D start
Network UPS Tools - UPS driver controller 2.6.4 0.000000 Starting UPS: kstar Network UPS Tools - Richcomm dry-contact to USB driver 0.04 (2.6.4) Warning: This is an experimental driver. Some features may not function correctly. Communications with UPS lost: Query to UPS failed
dmesg
[284116.758107] usb 1-1.3: usbfs: interface 0 claimed by usbfs while 'richcomm_usb' sets config #1 [..] [284155.661271] usb 1-1.3: usbfs: interface 0 claimed by usbfs while 'richcomm_usb' sets config #1 [284155.790409] usb 1-1.3: usbfs: process 17105 (richcomm_usb) did not claim interface 0 before use
sigh...
ls /sys/bus/usb/drivers/usbfs/ -lah
lrwxrwxrwx 1 root root 0 Dec 4 17:07 1-1.3:1.0 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.0
sudo su echo -n "1-1.3:1.0" > /sys/bus/usb/drivers/usbfs/unbind exit
Then try again
  sudo upsdrvctl -u root -D start
Network UPS Tools - UPS driver controller 2.6.4 0.000000 Starting UPS: kstar Network UPS Tools - Richcomm dry-contact to USB driver 0.04 (2.6.4) Warning: This is an experimental driver. Some features may not function correctly. Duplicate driver instance detected! Terminating other driver! Communications with UPS lost: Query to UPS failed
So I then did
sudo vim /etc/udev/rules.d/70-ignore-ups.rules
ATTRS{idVendor}=="0925", ATTRS{idProduct}=="1234", OPTIONS=="ignore_device"
sudo service udev restart
Stopping the hotplug events dispatcher: udevd. Starting the hotplug events dispatcher: udevd.
If you get this:
 sudo upsdrvctl -D start
Network UPS Tools - UPS driver controller 2.6.4 0.000000 Starting UPS: kstar Network UPS Tools - Richcomm dry-contact to USB driver 0.04 (2.6.4) Warning: This is an experimental driver. Some features may not function correctly. USB device [0925:1234] matches, but driver callback failed: could not detach kernel driver from interface 0: Operation not permitted 0.004077 Driver failed to start (exit status=1)
then you need to make sure to add -u root to upsdrvctl. Also, make sure that the driver versions match.

29 November 2012

287. Compiling Wine 1.5.5 from source using the carbon-dev deb patches

UPDATE 16 May 2013: See here for Wine 1.5.30: http://verahill.blogspot.com.au/2013/05/416-wine-1530-in-chroot.html

UPDATE (10th Jan 2013): See here for Wine 1.5.21 using the multiarch approach: http://verahill.blogspot.com.au/2013/01/308-compiling-wine-1521-on-debian.html
. Use the updated build instead of what follows below.


Here's how to build the wine 1.5.5 packages without any errors.

I'm cheating and using the debian rules from dev.carbon-project.org.-- it's a small file and is a better solution than downloading the deb files from there.

Note that you will probably need more packages than the ones listed here.

1. Download the source and debian build patches

sudo apt-get install bzip2
cd ~/tmp
mkdir wine-1.5.5_carbon/
cd wine-1.5.5_carbon/
wget http://sourceforge.net/projects/wine/files/Source/wine-1.5.5.tar.bz2
mv wine-1.5.5.tar.bz2 wine-unstable_1.5.5.orig.tar.bz2
tar xvf wine-unstable_1.5.5.orig.tar.bz2
cd wine-1.5.5/
wget http://dev.carbon-project.org/debian/wine-unstable/wine-unstable_1.5.5-0.1.debian.tar.bz2
tar xvf wine-unstable_1.5.5-0.1.debian.tar.bz2
rm wine-unstable_1.5.5-0.1.debian.tar.bz2 

2.  Edit control, control.in and rules
Allow any version of gcc (this may obviously backfire if your version is no good)
Edit debian/control and control.in

 27  gcc-4.5-multilib [amd64 kfreebsd-amd64], gcc-4.5 [amd64 kfreebsd-amd64]
 28  g++-4.5 [amd64 kfreebsd-amd64],

so that is says
 27  gcc-multilib [amd64 kfreebsd-amd64], gcc [amd64 kfreebsd-amd64],
 28  g++ [amd64 kfreebsd-amd64],

Edit debian/rules
 53 ifeq ($(DEB_HOST_GNU_CPU),x86_64)
 54 CC=gcc-4.5
 55 CXX=g++-4.5
 56 else
 57 CC=gcc
 58 CXX=g++

to say
 53 ifeq ($(DEB_HOST_GNU_CPU),x86_64)
 54 CC=gcc
 55 CXX=g++
 56 else
 57 CC=gcc
 58 CXX=g++

2. Get dependencies
Note that this list is based on a very old post -- some packages may not be needed.


sudo apt-get install ia32-libs ia32-libs-dev bison flex gcc libc6-dev libfontconfig-dev libfreetype6-dev libglu-dev libgsm1-dev libice-dev libjpeg-dev libldap-dev libmpg123-dev libncurses5-dev libopenal-dev libpng-dev libsm-dev libssl-dev libusb-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxml2-dev libxrandr-dev libxrender-dev libxslt-dev libxt-dev libxxf86vm-dev make libcapi20-dev liblcms-dev libsane-dev libhal-dev libdbus-1-dev valgrind prelink libcups2-dev opencl-dev lib32opencl1 oss4-dev gettext lib32v4l-dev lib32ncurses5-dev lib32asound2-dev libtiff4-dev libgphoto2-2-dev
sudo apt-get install libxkbfile-dev libxxf86dga-dev freeglut3-dev unixodbc-dev gcc-multilib dpkg-dev

Note: I used the following list on debian stable/squeeze.
sudo apt-get install ia32-libs ia32-libs-dev bison flex gcc libc6-dev libfontconfig-dev libfreetype6-dev libglu-dev libgsm1-dev libice-dev libjpeg-dev libldap-dev libmpg123-dev libncurses5-dev libopenal-dev libpng-dev libsm-dev libssl-dev libusb-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxml2-dev libxrandr-dev libxrender-dev libxslt-dev libxt-dev libxxf86vm-dev make libcapi20-dev liblcms-dev libsane-dev libhal-dev libdbus-1-dev valgrind prelink libcups2-dev oss4-dev gettext lib32v4l-dev lib32ncurses5-dev lib32asound2-dev libtiff4-dev libgphoto2-2-dev libxkbfile-dev libxxf86dga-dev freeglut3-dev unixodbc-dev gcc-multilib dpkg-dev debhelper libxmu-dev dctrl-tools lzma sharutils lib32z1-dev libgstreamer-plugins-base0.10-dev
sudo apt-get install lib32opencl1


Then continue as normal.

If you're on Wheezy/Testing you should be following this post instead anyway.

3. Compile
in wine-1.5.5/:
dpkg-buildpackage -us -uc
If all went well you saw:
dpkg-deb: building package `wine-unstable' in `../wine-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `wine-bin-unstable' in `../wine-bin-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-dbg-unstable' in `../libwine-dbg-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-dev-unstable' in `../libwine-dev-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-unstable' in `../libwine-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-alsa-unstable' in `../libwine-alsa-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-bin-unstable' in `../libwine-bin-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-capi-unstable' in `../libwine-capi-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-cms-unstable' in `../libwine-cms-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-gl-unstable' in `../libwine-gl-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-gphoto2-unstable' in `../libwine-gphoto2-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-ldap-unstable' in `../libwine-ldap-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-openal-unstable' in `../libwine-openal-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-oss-unstable' in `../libwine-oss-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-print-unstable' in `../libwine-print-unstable_1.5.5-0.1_amd64.deb'.
dpkg-deb: building package `libwine-sane-unstable' in `../libwine-sane-unstable_1.5.5-0.1_amd64.deb'.
[..]
dpkg-source: info: using options from wine-1.5.5/debian/source/options: --compression=bzip2 --compression-level=9
dpkg-source: info: unapplying Bug#28201_proposed-fix-modified.patch
dpkg-source: info: unapplying Bug#28898_squashed-proposed-patches.patch
dpkg-source: info: unapplying fix-winegcc-paths.patch
dpkg-source: info: unapplying Bug#29669_proposed-fix.patch
dpkg-source: info: unapplying function_grep.patch
dpkg-source: info: unapplying readd_xpm.patch
dpkg-source: info: unapplying debian-changes-from-1.1.32-1.patch
dpkg-buildpackage: full upload (original source is included)

Your packages will be found in the wine-1.5.5_carbon/ directory.
../libwine-alsa-unstable_1.5.5-0.1_amd64.deb
../libwine-bin-unstable_1.5.5-0.1_amd64.deb
../libwine-capi-unstable_1.5.5-0.1_amd64.deb
../libwine-cms-unstable_1.5.5-0.1_amd64.deb
../libwine-dbg-unstable_1.5.5-0.1_amd64.deb
../libwine-dev-unstable_1.5.5-0.1_amd64.deb
../libwine-gl-unstable_1.5.5-0.1_amd64.deb
../libwine-gphoto2-unstable_1.5.5-0.1_amd64.deb
../libwine-ldap-unstable_1.5.5-0.1_amd64.deb
../libwine-openal-unstable_1.5.5-0.1_amd64.deb
../libwine-oss-unstable_1.5.5-0.1_amd64.deb
../libwine-print-unstable_1.5.5-0.1_amd64.deb
../libwine-sane-unstable_1.5.5-0.1_amd64.deb
../libwine-unstable_1.5.5-0.1_amd64.deb
../wine-bin-unstable_1.5.5-0.1_amd64.deb
../wine-unstable_1.5.5-0.1_amd64.deb

If something went wrong, it's probably because of a missing dependency.

To install just run
sudo dpkg -i *.deb in the wine-1.5.5_carbon/ directory.

28 November 2012

286. Briefly: installing the dev.carbon-project.org wine 1.5.5 from debs

UPDATE 16 May 2013: See here for Wine 1.5.30: http://verahill.blogspot.com.au/2013/05/416-wine-1530-in-chroot.html

UPDATE (10th Jan 2013): See here for Wine 1.5.21 using the multiarch approach: http://verahill.blogspot.com.au/2013/01/308-compiling-wine-1521-on-debian.html

Update: Try this first: http://verahill.blogspot.com.au/2012/11/compiling-wine-155-from-source-using.html
It uses a lot less bandwidth, and involves compiling wine yourself, but using the build instructions from the carbon-project.org

Please Note
For bandwidth reasons please don't use this method if you are satisfied with the version you obtain through compiling by following this method: http://verahill.blogspot.com.au/2012/10/wine-1515-on-debian-testingwheezy.html



A long time ago (http://verahill.blogspot.com.au/2012/01/debian-testingwheezy-64-bit-installing.html) I posted three methods for installing Wine on Debian Testing:
1. Use the Squeeze version
2. Get the Wine-unstable build from http://dev.carbon-project.org/debian/wine-unstable/
3. Compile your own version

I've never managed to build Wine to successfully include OpenCL, gstreamer, or libgsm. Also, there are occasional issues with libjpeg, and I recently have problems with libOSMesa.

So here's an alternative solution for installing a relatively recent version of wine, and it involves no compiling.

Note that it seems that the Wine project uses the traditional way of numbering releases i.e. odd version are development versions i.e. the 1.4 series is stable, the 1.5 series is under development, and the 1.6 series will be the next stable.

Please note what it says on the carbon-dev page:
The amount of traffic this little sub-page generates is quite respectable. If you think this service helpful and want to help cover some of the attached costs, please donate a few Euros, either through PayPal, by flattring this or by donating through Flattr. Thank you! (You can, of course, also donate something, for totally different reasons.)
So at the very least don't download the same packages over and over and keep bandwidth to a minimum.

Anyway, here we go.

0. Clean up
Uninstall any newer version of wine if you've compiled e.g. 1.5.15.
sudo apt-get autoremove wine

1. Download
Get the debs for wine 1.5.5:
cd ~/tmp
mkdir wine-1.5.5
cd wine-1.5.5/
wget -r -l1 --no-parent -A amd64.deb http://dev.carbon-project.org/debian/wine-unstable/
FINISHED --2012-11-28 17:05:04-- Total wall clock time: 1m 1s Downloaded: 18 files, 65M in 54s (1.20 MB/s)
cd dev.carbon-project.org/debian/wine-unstable/

2. Install
sudo dpkg -i *.deb
Processing triggers for man-db ... Setting up libwine-alsa-unstable (1.5.5-0.1) ... Setting up libwine-bin-unstable (1.5.5-0.1) ... Setting up libwine-capi-unstable (1.5.5-0.1) ... Setting up libwine-cms-unstable (1.5.5-0.1) ... Setting up libwine-dbg-unstable (1.5.5-0.1) ... Setting up libwine-dev-unstable (1.5.5-0.1) ... Setting up libwine-gl-unstable (1.5.5-0.1) ... Setting up libwine-gphoto2-unstable (1.5.5-0.1) ... Setting up libwine-ldap-unstable (1.5.5-0.1) ... Setting up libwine-openal-unstable (1.5.5-0.1) ... Setting up libwine-oss-unstable (1.5.5-0.1) ... Setting up libwine-print-unstable (1.5.5-0.1) ... Setting up libwine-sane-unstable (1.5.5-0.1) ... Setting up wine-bin-unstable (1.5.5-0.1) ... Processing triggers for mime-support ... Processing triggers for gnome-menus ... Processing triggers for desktop-file-utils ... Setting up wine-unstable (1.5.5-0.1) ...

3. You're done