...:::!!! SOLVED !!!:::...
This was a real pain, so this is what I did to get it to work...
In
/etc/bluetooth you need to create or edit the following files:
hcid.conf input.conf main.conf
# cat /etc/bluetooth/hcid.conf
#HCId Options
options {
autoinit yes;
security auto;
pairing multi;
passkey "1234";
}
#HCI Device Settings
device {
name "%h-%d";
#encrypt enable;
class 0x082580;
iscan enable; pscan enable;
discovto 0;
lm accept,master;
lp rswitch,hold,sniff,park;
pkt_type DM1,DM3,DM5,DH1,DH3,DH5,HV1,HV2,HV3;
}
#device 00:01:90:E2:49:BD {
#name "Sony Corporation Remote Controller";
#}
This section below is pretty important to get the device address use hidd --scan and press the discoverable button on the bottom of your mouse.
device 00:02:76:07:68:1C {
name "Sony Corporation (3) Button Mouse";
# cat /etc/bluetooth/main.conf
[General]
# List of plugins that should not be loaded on bluetoothd startup
#DisablePlugins = network,input
# Default adaper name
# %h - substituted for hostname
# %d - substituted for adapter id
Name = %h-%d
# Default device class. Only the major and minor device class bits are
# considered.
Class = 0x082580
# How long to stay in discoverable mode before going back to non-discoverable
# The value is in seconds. Default is 180, i.e. 3 minutes.
# 0 = disable timer, i.e. stay discoverable forever
DiscoverableTimeout = 0
# How long to stay in pairable mode before going back to non-discoverable
# The value is in seconds. Default is 0.
# 0 = disable timer, i.e. stay pairable forever
PairableTimeout = 0
# Use some other page timeout than the controller default one
# which is 16384 (10 seconds).
PageTimeout = 8192
# Discover scheduler interval used in Adapter.DiscoverDevices
# The value is in seconds. Defaults is 0 to use controller scheduler.
DiscoverSchedulerInterval = 0
# What value should be assumed for the adapter Powered property when
# SetProperty(Powered, ...) hasn't been called yet. Defaults to true
InitiallyPowered = true
# Remember the previously stored Powered state when initializing adapters
RememberPowered = true
# Use vendor, product and version information for DID profile support.
# The values are separated by ":" and VID, PID and version.
#DeviceID = 0005:0001:0129
#DeviceID = 0000:0000:0000
# Do reverse service discovery for previously unknown devices that connect to
# us. This option is really only needed for qualification since the BITE tester
# doesn't like us doing reverse SDP for some test cases (though there could in
# theory be other useful purposes for this too). Defaults to true.
ReverseServiceDiscovery = true
# cat /etc/bluetooth/input.conf
# Configuration file for the input service
# This section contains options which are not specfic to any
# particular interface
[General]
# Set idle timeout (in minutes) before the connection will
# be disconnect (defaults to 0 for no timeout)
IdleTimeout=0
In
/etc/default you need to edit the following file:
bluetooth
# cat /etc/default/bluetooth
# Defaults for bluez-utils
# This file supersedes /etc/default/bluez-pan. If
# that exists on your system, you should use this
# file instead and remove the old one. Until you
# do so, the contents of this file will be ignored.
# start bluetooth on boot?
# compatibility note: If this variable is not found bluetooth will
# start
BLUETOOTH_ENABLED=1
# This setting will switch HID devices (e.g mouse/keyboad) to HCI mode, that is
# you will have bluetooth functionality from your dongle instead of only HID.
# Note that not every bluetooth dongle is capable of switching back to HID
# mode, see
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=355497
HID2HCI_ENABLED=1
HID2HCI_UNDO=1
############ HIDD
#
# HID daemon
HIDD_ENABLED=1
HIDD_OPTIONS="--connect 00:02:76:07:68:1C --server"
#HIDD_OPTIONS="--master --connect 00:02:76:07:68:1C --server"
<<-- I had some problems with --master and this mouse...
# to make hidd always use a particular interface, use something
# like this, substituting the bdaddr of the interface:
# HIDD_OPTIONS="-i AA:BB:CC
D:EE:FF --server"
#
# remove '--master' if you're having trouble working with Ericsson
# T630 phones with hidd operational at the same time.
############ DUND
#
# Run dund -- this allows ppp logins. 1 for enabled, 0 for disabled.
DUND_ENABLED=0
# Arguments to dund: defaults to acting as a server
DUND_OPTIONS="--listen --persist"
# Run dund --help to see the full array of options.
# Here are some examples:
#
# Connect to any nearby host offering access
# DUND_OPTIONS="--search"
#
# Connect to host 00:11:22:33:44:55
# DUND_OPTIONS="--connect 00:11:22:33:44:55"
#
# Listen on channel 3
# DUND_OPTIONS="--listen --channel 3"
# Special consideration is needed for certain devices. Microsoft
# users see the --msdun option. Ericsson P800 users will need to
# listen on channel 3 and also run 'sdptool add --channel=3 SP'
############ PAND
#
# Run pand -- ethernet: creates new network interfaces bnep<N>
# that can be configured in /etc/network/interfaces
# set to 1 for enabled, 0 for disabled
PAND_ENABLED=0
# Arguments to pand
# Read the PAN howto for ways to set this up
#
http://bluez.sourceforge.net/contrib/HOWTO-PAN
# in later versions of pand it used to execute /etc/bluetooth/pan/dev-up
# automatically, now you will need to use the --devup/--devdown options. See
# the pand manpage for more informations
PAND_OPTIONS=""
# example pand lines
#
# Act as the controller of an ad-hoc network
# PAND_OPTIONS="--listen --role GN"
#
# Act as a network access point: routes to other networks
# PAND_OPTIONS="--listen --role NAP"
#
# Act as a client of an ad-hoc controller with number 00:11:22:33:44:55
# PAND_OPTIONS="--role PANU --connect 00:11:22:33:44:55"
#
# Connect to any nearby network controller (access point or ad-hoc)
# PAND_OPTIONS="--role PANU --search"
############ SDPTOOL
# this variable controls the options passed to sdptool on boot, useful if you
# need to setup sdpd on boot.
# options are ;-separated, i.e. for every ; an sdptool instance will be
# launched
#
# examples:
# SDPTOOL_OPTIONS="add --channel=3 SP" # ericsson P800 serial profile
# SDPTOOL_OPTIONS="add --channel=8 OPUSH ; add --channel=9 FTRN" # motorola
# # object push and file transfer
SDPTOOL_OPTIONS=""
Final Edit /etc/rc.local
# cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
hciconfig hci0 reset
hciconfig hci0 class 0x082580
<<-- This (as shown below) will set Service Classes: Capturing and Device Class: Peripheral, Pointing device in your hci device.
exit 0
On reboot/boot/whatever...
# hciconfig -a
hci0: Type: USB
BD Address: 00:1B:FB:8A:79:88 ACL MTU: 1021:6 SCO MTU: 64:1
UP RUNNING PSCAN ISCAN
RX bytes:279252 acl:18271 sco:0 events:480 errors:0
TX bytes:1385 acl:9 sco:0 commands:55 errors:0
Features: 0xff 0xff 0x8f 0xfe 0x9b 0xff 0x79 0x83
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: ACCEPT MASTER
Name: 'XXXXX-000010011'
Class: 0x082580
Service Classes: Capturing
Device Class: Peripheral, Pointing device
HCI Ver: 2.1 (0x4) HCI Rev: 0x38 LMP Ver: 2.1 (0x4) LMP Subver: 0x213d
Manufacturer: Broadcom Corporation (15)
and hidd --show should reveal
# hidd --show
00:02:76:07:68:1C Sony Corporation (3) Button Mouse [0a5c:0001] connected
But the damn mouse didn't move!!! It was connected though!!!
Ahh lets look at /proc/bus/input/devices
# cat /proc/bus/input/devices
(list shortened...)
I: Bus=0005 Vendor=0a5c Product=0001 Version=0129
N: Name="Sony Corporation (3) Button Mouse"
P: Phys=00:1B:FB:8A:79:88
S: Sysfs=/class/input/input15
U: Uniq=00:02:76:07:68:1C
H: Handlers=mouse4
event13
B: EV=1f
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
B: ABS=100 0
B: MSC=10
It's being handled by event13...
A quick look at /dev/input/event13 revealed
# cat /dev/input/event13
D��I������D��I������D�
�D��I:����D��I:����D��I)
��I�d����D��I�d����D��I�dD��I������D��I������D��I��D��I�����D��I��
IF GARBAGE PRINTS WHEN MOVING THE MOUSE IT'S CONNECTED PROPERLY
So why is X (Gnome or KDE) having a fricking problem...
xorg.conf
# cat /etc/X11/xorg.conf
Section "InputDevice"
Identifier "Sony Vaio Keys"
Driver "evdev"
Option "Device" "/dev/input/by-id/acpi-sony_laptop-event-kbd"
Option "Name" "Sony Vaio Keys"
Option "XkbLayout" "evdev"
Option "XkbModel" "evdev"
EndSection
Section "InputDevice"
Identifier "VGP-BMS33"
Driver "evdev"
Option "Protocol" "ExplorerPS/2"
Option "Device" "/dev/input/event13"
Option "ZAxisMapping" "4 5"
Option "Buttons" "5"
Option "Emulate3Buttons" "true"
EndSection
#Section "InputDevice"
# Identifier "VGP-BRMP10"
# Driver "evdev"
# Option "Protocol" "ExplorerPS/2"
# Option "Device" "/dev/input/mouse5"
# Option "UpDownScrolling" "1"
# Option "Buttons" "5"
# Option "Emulate3Buttons" "false"
#EndSection
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc104
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "Alps Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/event11"
Option "Protocol" "event"
Option "LeftEdge" "120"
Option "RightEdge" "830"
Option "TopEdge" "120"
Option "BottomEdge" "650"
Option "FingerLow" "14"
Option "FingerHigh" "15"
Option "MaxTapTime" "180"
Option "MaxTapMove" "110"
Option "ClickTime" "0"
Option "EmulateMidButtonTime" "75"
Option "VertScrollDelta" "10"
Option "HorizScrollDelta" "0"
Option "MinSpeed" "0.45"
Option "MaxSpeed" "0.75"
Option "AccelFactor" "0.020"
Option "EdgeMotionMinSpeed" "200"
Option "EdgeMotionMaxSpeed" "200"
Option "UpDownScrolling" "1"
Option "CircularScrolling" "0"
Option "CircScrollDelta" "0.1"
Option "CircScrollTrigger" "2"
Option "SHMConfig" "true"
EndSection
Section "ServerLayout"
Identifier "Default Layout"
screen 0 "Default Screen" 0 0
InputDevice "Generic Keyboard"
InputDevice "Alps Touchpad"
InputDevice "VGP-BMS33" "SendCoreEvents"
# InputDevice "VGP-BRMP10"
EndSection
Section "Device"
Identifier "Configured Video Device"
EndSection
Section "Monitor"
Identifier "Configured Monitor"
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
EndSection
It now works every time, I am still working on the remote...
Here is my hardware:
# hcitool info 00:02:76:07:68:1C
Requesting information ...
BD Address: 00:02:76:07:68:1C
Device Name: VGP-BMS33
LMP Version: 1.2 (0x2) LMP Subversion: 0x229
Manufacturer: Broadcom Corporation (15)
Features: 0xbc 0x02 0x04 0x38 0x08 0x00 0x00 0x00
<encryption> <slot offset> <timing accuracy> <role switch>
<sniff mode> <RSSI> <power control> <enhanced iscan>
<interlaced iscan> <interlaced pscan> <AFH cap. slave>
# hcitool info 00:01:90:E2:49:BD
Requesting information ...
BD Address: 00:01:90:E2:49:BD
Device Name: VGP-BRMP10
LMP Version: 2.0 (0x3) LMP Subversion: 0x10b7
Manufacturer: Cambridge Silicon Radio (10)
Features: 0xfc 0x07 0x86 0x7e 0x18 0x18 0x00 0x00
<encryption> <slot offset> <timing accuracy> <role switch>
<hold mode> <sniff mode> <park state> <RSSI> <channel quality>
<paging scheme> <power control> <broadcast encrypt>
<EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan>
<interlaced iscan> <interlaced pscan> <inquiry with RSSI>
<AFH cap. slave> <AFH class. slave> <AFH cap. master>
<AFH class. master>