В письме от 2 мая 2013 11:12:21 пользователь Àlex Fiestas написал: > On Friday 26 April 2013 15:15:49 Sergey Vidyuk wrote: > > Hello > > > > I have blackberry playbook and want to simplify work with it in KDE. I > > want > > to see a device in the device notifier and dolphin left panel when I plug > > it via usb. The issue is the way device interacts with a PC. > > > > * it's visible as usb network interface > > * there is DHCP server onboard > > * after IP is obtained device internal storrage is accessed throug the > > SMB > > > > protocol. > > > > I've configured running dhcpcd on device is connected using udev+systemd > > and I can configure automatic mount of the device via fuse, however I > > would like to have nice integration with KDE instead (device with custom > > icon in the device notifier applet which can be mounted and unmounted > > through this applet) > > > > I've read Solid project documentation but found only information how to > > add > > actions for devices but not devices themself. Can it be done via > > configuration (writing desktop entries) or should it be done in some kind > > of plugin for solid written in C++? Can somebody give me good start point > > to digg how to do what I want? > > Probably some C++ will have to be involved, we have to: > -Detect these devices > -Know that these devices talk samba > -Know the IP we should talk to > > Detecting and be possibly handled either by adding the device to MPI [1] or > udev rule (perhaps udev will be better). In MPI or Udev rule we should > indicate that they use samba, somehow.
I've written udev rule to detect playbook connection as I mentioned (attaching it to this letter). It only renames network interface name to blackberry# currently. Which way should I indicate that it uses samba? Solid lists connected playbook in the following way: $ solid-hardware list details udi = '/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/net/blackberry0' parent = '/org/kde/solid/udev' (string) vendor = 'Research In Motion, Ltd.' (string) product = 'RIM Network Device' (string) description = 'Networking Interface' (string) NetworkInterface.ifaceName = 'blackberry0' (string) NetworkInterface.wireless = false (bool) NetworkInterface.hwAddress = 'a2:6c:ec:ff:48:ba' (string) NetworkInterface.macAddress = 178588716320954 (0xa26cecff48ba) (qulonglong) > > Knowing the IP gets a little bit more tricky, I guess that NetworkManager > should get the ip automatically, the question is how to get it (we need the > gateway). In my case I use dhcpcd started by systemd (corresponding service file is also attached). Loks like solid can say nothing about my network configuration since I don't use NetworkManager: $ solid-network listdevices debug: network interface list contains: 0 entries By the way it's simple to get device IP knowing device IP and netmask. Netmask is always 255.255.255.252 which means that only 2 IPs available. According to my experience network is always looks like: * subnet addr + 1 Playbook IP * subnet addr + 2 PC IP * subnet addr + 3 broadkast IP However I always prefere to check playbook IP by ping: $ ping -c 1 -b <broadcast IP> | grep "bytes from" This method should always work since there are only 2 hosts in this network PC and Playbook > > I have a playbook without BB10, pluging it only produces a CD (which we do > not seem to support). BB10 is not yet released for Playbook so I also have TabletOS on it. The reason why you see it as cdrom is in the device settings. Just open "Storage & Sharing" tab of the device settings and change "USB Connections" from "Automatically Detect" to anything else. Device will identify itself as usb network interface after that. usb_modeswitch rule reqired here to work with playbook and BB10 when device in "Automatically Detect" USB mode. > > Will investigate further in a week. > > Cheerz. > _______________________________________________ > Kde-hardware-devel mailing list > [email protected] > https://mail.kde.org/mailman/listinfo/kde-hardware-devel I'm C++ programmer so I can help with writing necessary code to support BB10/TabletOS devices. All I need for now is some kind of starting point (class name or working example). Sergey Vidyuk
# Set of rules to init connected blackberry device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRS{idVendor}=="0fca",
KERNEL=="usb*", NAME="blackberry%n", TAG+="systemd",
ENV{SYSTEMD_WANTS}+="blackberry@%n.service"
[Unit] Description=Blackberry device %I Wants=network.target Before=network.target BindsTo=sys-subsystem-net-devices-blackberry%i.device After=sys-subsystem-net-devices-blackberry%i.device [Service] Type=forking PIDFile=/run/dhcpcd-blackberry%I.pid ExecStart=/usr/sbin/dhcpcd -C resolv.conf -q -w blackberry%I ExecStop=/usr/sbin/dhcpcd -x blackberry%I [Install] WantedBy=multi-user.target
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Kde-hardware-devel mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-hardware-devel
