cloud goes social

Icon

computer, travel, movies, music, cuisine and more

Logitech Wave Pro – MacOSX

Hi all,
short post, but hopefully helpful to some!

I recently bought a new keyboard + mouse set from logitech. I tendo to get quite bad with the wrists, especially when typing much. Long story short, I have been using a Logitech Wave keyboard for a long time! Now, since I will be spending much time at the office (and not only at home) I thought I could buy a new set for office/home. I just went to the Logitech website and set for a wonderful Logitech Wave Pro. Now, if only I had checked the fact that they say that it’s not compatible with MacOS X!

But well, the set arrived, I plugged it in, and to my horror it wasn’t recognized in the System Preferences Logitech Control Center (latest version, 3.3.0). The message was simply: “No Logitech Device Found”…

My “hacker” spirit of course couldn’t bear with this fact. Especially because the keyboard looked exactly like the Wave (not the Pro, mind it)… The mouse itself is simply an MX1100, which is supported by default… Weird, weird.

I started digging and found out the the (in)famous Logitech Software installs some special files in the usual paths:

/Library/Application Support/Logitech.localized/Logitech Control Center.localized/LCCDaemon.app/Contents/Resources

In particular files named:

Hardware Descriptions 2002.plist
Hardware Descriptions 2006.plist
Hardware Descriptions 2007.plist
Hardware Descriptions 2008.plist
Hardware Descriptions 2009.plist
Hardware Descriptions 2010.plist

Now, if one is to open such files with the standard application (Property List Editor) he will find something along the lines of:

Bingo! Now I only had to find out the actual HEX number/product ID. How? Easy, I switched to a windows installation, installed the Logitech SetPoint software, dumped a text file generated by the bug/hardware/problems reporter and voila, found my numbers:

0.000 Device 0x009018d8 parent=0xffffffff model=0x0300001e bus=2-USB       type=3-RECEIVER  ser=	 vid=046D pid=C517 rev=3810 name=Loreley 2RX
0.000 Device 0x008010b0 parent=0x009018d8 model=0x01000087 bus=2-USB       type=1-MOUSE     ser= vid=0000 pid=003C rev=0000 name=LX8 Cordless Laser Mouse (Gomera Dkt)
0.000 Device 0x00a02100 parent=0xffffffff model=0x0300001e bus=2-USB       type=3-RECEIVER  ser=	 vid=046D pid=C517 rev=3810 name=Loreley 2RX
0.000 Device 0x00700888 parent=0x00a02100 model=0x0200005b bus=2-USB       type=2-KEYBOARD  ser= vid=0000 pid=0060 rev=0000 name=Wave Cordless Keyboard
0.000 Device 0x00d03978 parent=0xffffffff model=0x03000030 bus=2-USB       type=3-RECEIVER  ser=	 vid=046D pid=C529 rev=0700 name=eQuad desktop receiver (Kiwi DT Mercury)
0.000 Device 0x00b02928 parent=0x00d03978 model=0x02000063 bus=2-USB       type=2-KEYBOARD  ser=QADR:38CC4662 vid=0000 pid=2003 rev=0000 name=MKT name TBD (Mercury)
0.000 Device 0x00c03150 parent=0x00d03978 model=0x0100008e bus=2-USB       type=1-MOUSE     ser=QADR:38CC4662 vid=0000 pid=1015 rev=0000 name=MX Pro (Macau RC)

I just copied the MX1100 entry in the 2008.plist file and modified the pID (actually just one number increase!) and the one for the wave keyboard. Restarted the Logitech Demo and everything is fully working (well, almost, some keys on the keyboard are apparently mapped in a different way, but I never use them too much, it _might_ be fixable, if I have some more time…).

Anyway, for those who didn’t understand too much, here’s a .zip with the new file, you can just unzip it and place it in your directory, restart the Logitech Daemon (or reboot the PC) and your Wave Pro Set will now be supported!

  1. Download the .zip
  2. Uncompress its content
  3. in the Finder go to: /Library/Application Support/Logitech.localized/Logitech Control Center.localized/
  4. Right-click on the LCCDaemon.app and Show Package Contents
  5. go into Contents/Resources/
  6. (optional) backup the file called: Hardware Descriptions 2008.plist
  7. Copy the uncompressed file
  8. Reboot (or restart the Logitech Daemon from the Activity Monitor/Terminal)

As a result, you will get this beauty in your Logitech System Preferences

Hope it helps!

~Claudio

Webradios on OSX: guide to easy listening

I’m a huge fan of some radios which I’ve been listening to in my life. For example, while driving in Italy I usually listen to virginradio, while being in Sydney I used to listen to tripleM, both of which usually air good rock music without too much DJs and ads.
YES! I want to listen to music, not ads or people speaking!

Thankfully most radio stations nowadays also spot an internet streaming. Nightmarefully usually it’s a flash or WMP (Windows Media Player) streaming. Being a MacOSX user (mostly) or a Linux user (always – mostly: so basically the time I’m not on MacOSX) I found both formats bad. The first because it works once and not the other time, the second because while more or less working with Quicktime (+ some weird nasty plugin [flip4Mac])

ATTEMPTED SOLUTION

What I usually do is easy – with example:

  1. Go to the webpage of the radio – http://www.triplem.com.au/sydney
  2. Find the ‘listen online’ button
    Listen Online Example for TripleM

    Listen Online Example for TripleM

  3. Open up the source code for the page that the ‘listen online’ opens up (usually they use pop-ups windows for such streamings) when there’s some kind of streaming going on
  4. Search for something like:
    asx
    Or alternatively if you don’t find any entry:
    embed
  5. If in the step before you found the asx copy all the link, following our example:

    ...
    id="WMPlayer"
    name="WMPlayer"
    src="http://resources.triplem.com.au/listenfeed/2mmmlivestream.asx"
    type="video/quicktime"
    ...
    

    let’s copy: http://resources.triplem.com.au/listenfeed/2mmmlivestream.asx

    If instead in the step before we found the embed keyword let’s look around it to find something like:

    ...
    <EMBED type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"
    SRC="http://151.1.245.1/20" name="nnrVideoPlayer"
    autostart="1" width="400" height="70" showcontrols="1">
    </EMBED>
    ...
    

    around the code there should be the src tag, such as in the example. Let’s therefore copy: http://151.1.245.1/20

  6. Open your favorite video/audio player, not iTunes, such as VLC and search for something called like ‘Open Network’. In our example, using VLC it’s: File->Open Network… or even faster the shortcut ⌘N and paste what you just copied:

    The right place to paste the information copied

    The right place to paste the information copied

  7. Press OK and after some buffering time you should be listening to your favorite radio! And without any ads or needing to keep your browser or anything!

This is clearly and hack solution which may work for you or not. If you have problems with your radio streaming and the above solution don’t hesitate to contact me and I’ll look into it (whenever I’ll find some time).

Hope it helped!

ciop ciop

TIME protocol on MacOSX

Recently in the Advanced Operating System course, at ETH (Systems) I’ve struggled upon the TIME protocol (not NTP). The problem was simple: get a TIME protocol server that could respond to the SLUG2 (friendly called by me and my project partner SLUT) when ‘she’ was needing a reply (for some randomness, apparently).

Since MacOSX doesn’t provide any such thing, I settled on the task and here’s the result:

Server side:

#!/usr/bin/env python

import time
from socket import *

def server(host="", port=37):
	sock = socket (AF_INET, SOCK_DGRAM)
	sock.bind ((host, port))

	print "listening on port %s (%s)" % (port, `host`)
	while 1:
		# Block waiting for packet.
		data, address = sock.recvfrom(256)
		print "Client sent:", data
		print "Client at:", address
		# Got a packet, reply to address packet came from.
		sock.sendto(time.time(),address)

if __name__ == "__main__":
	server("", 37)

Client side (just to test that the server is actually working)

#!/usr/bin/env python

import socket
port=37
clisocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while 1:
	data = raw_input("Type something: ")
	if data:
		clisocket.sendto(data, ("127.0.0.1", port))
		# Block waiting for reply.
		data, address = clisocket.recvfrom(256)
		print "Server sent time:", data
	else:
		break

clisocket.close()

This code (and any other that might be present on this blog) should be taken with a good grain of salt. It seems to do what it’s supposed to do. So if you’re in an emergency, trying to find a TIME protocol server to make it answer your client needs, here it is. Fiddle with it as much as you want. And don’t hesitate to comment with good and bad news about it.

The code and the issue have been tested on MacOSX 10.5.6

ciop ciop

ABOUT

CLOUD GOES SOCIAL is the personal blog of Claudio Marforio.
He holds a MSc in Computer Science with focus on Information Security granted by ETH Zurich. He is currently a PhD Student in the System Security Group of ETH Zurich

Categories

Donate

If you appreciate my work, my applications, this blog in general or you simply feel like rewarding me for something please consider donate.
Any amount will motivate me in keeping up with the blog and the applications.


Thank you!

Donors

F. Olsen, W. Chang, W. Edmondson, C. Sharff, M. Brown, G. Helton, J. de Ruiter, K. Langner, K. Smith, T. OHalloran, B. Zabarauskas

Listening to ...