just type this in terminal...
Code: Select all
ln -s /usr/local/apps/pFind /root/.config/rox.sourceforge.net/SendTo/.inode_mount-point/pFind
Code: Select all
ln -s /usr/local/apps/pFind /root/.config/rox.sourceforge.net/SendTo/.inode_mount-point/pFind
I didn't realized that SFS loader was written with Xdialog!!!SFS loader is written using the extremely primitive Xdialog, two buttons is the maximum we can get
Code: Select all
[bluetooth]# scan on
Discovery started
[CHG] Controller 60:57:18:E0:05:69 Discovering: yes
[NEW] Device C8:1B:F6:35:48:07 BluetoothMouse3600
[CHG] Device C8:1B:F6:35:48:07 RSSI: -47
[bluetooth]# pair C8:1B:F6:35:48:07
Attempting to pair with C8:1B:F6:35:48:07
[CHG] Device C8:1B:F6:35:48:07 Connected: yes
[CHG] Device C8:1B:F6:35:48:07 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1B:F6:35:48:07 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1B:F6:35:48:07 UUIDs: 0000180a-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1B:F6:35:48:07 UUIDs: 0000180f-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1B:F6:35:48:07 UUIDs: 00001812-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1B:F6:35:48:07 ServicesResolved: yes
[CHG] Device C8:1B:F6:35:48:07 Paired: yes
[NEW] Primary Service
/org/bluez/hci0/dev_C8_1B_F6_35_48_07/service0008
00001801-0000-1000-8000-00805f9b34fb
Generic Attribute Profile
[NEW] Primary Service
/org/bluez/hci0/dev_C8_1B_F6_35_48_07/service0009
0000180a-0000-1000-8000-00805f9b34fb
Device Information
[NEW] Characteristic
/org/bluez/hci0/dev_C8_1B_F6_35_48_07/service0009/char000a
00002a29-0000-1000-8000-00805f9b34fb
Manufacturer Name String
[NEW] Characteristic
/org/bluez/hci0/dev_C8_1B_F6_35_48_07/service0009/char000c
00002a50-0000-1000-8000-00805f9b34fb
PnP ID
Pairing successful
[CHG] Device C8:1B:F6:35:48:07 Modalias: usb:v045Ep0916d0110
[BluetoothMouse3600]# trust C8:1B:F6:35:48:07
[CHG] Device C8:1B:F6:35:48:07 Trusted: yes
Changing C8:1B:F6:35:48:07 trust succeeded
[BluetoothMouse3600]# connect C8:1B:F6:35:48:07
Attempting to connect to C8:1B:F6:35:48:07
Connection successful
Code: Select all
user@Venue-11-Pro-7140:~$ bluetoothctl
Agent registered
[NEW] Device C8:1C:F5:36:48:07 BluetoothMouse3600
[bluetooth]# scan on
Discovery started
[CHG] Device C8:1C:F5:36:48:07 RSSI: -49
[bluetooth]# pair C8:1C:F5:36:48:07
Attempting to pair with C8:1C:F5:36:48:07
[CHG] Device C8:1C:F5:36:48:07 Connected: yes
[CHG] Device C8:1C:F5:36:48:07 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1C:F5:36:48:07 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1C:F5:36:48:07 UUIDs: 0000180a-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1C:F5:36:48:07 UUIDs: 0000180f-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1C:F5:36:48:07 UUIDs: 00001812-0000-1000-8000-00805f9b34fb
[CHG] Device C8:1C:F5:36:48:07 ServicesResolved: yes
[CHG] Device C8:1C:F5:36:48:07 Paired: yes
[NEW] Primary Service
/org/bluez/hci0/dev_C8_1C_F5_36_48_07/service0008
00001801-0000-1000-8000-00805f9b34fb
Generic Attribute Profile
[NEW] Primary Service
/org/bluez/hci0/dev_C8_1C_F5_36_48_07/service0009
0000180a-0000-1000-8000-00805f9b34fb
Device Information
[NEW] Characteristic
/org/bluez/hci0/dev_C8_1C_F5_36_48_07/service0009/char000a
00002a29-0000-1000-8000-00805f9b34fb
Manufacturer Name String
[NEW] Characteristic
/org/bluez/hci0/dev_C8_1C_F5_36_48_07/service0009/char000c
00002a50-0000-1000-8000-00805f9b34fb
PnP ID
Pairing successful
[CHG] Device C8:1C:F5:36:48:07 Modalias: usb:v045Ep0916d0110
[BluetoothMouse3600]# trust C8:1C:F5:36:48:07
[CHG] Device C8:1C:F5:36:48:07 Trusted: yes
Changing C8:1C:F5:36:48:07 trust succeeded
[BluetoothMouse3600]# connect C8:1C:F5:36:48:07
Attempting to connect to C8:1C:F5:36:48:07
Connection successful
Code: Select all
# lsmod | grep '^blue' | column -t
bluetooth 307200 31 btrtl,btintel,btbcm,bnep,btusb,rfcomm
# lsmod | grep '^bt' | column -t
btusb 40960 0
btrtl 16384 1 btusb
btbcm 16384 1 btusb
btintel 16384 1 btusb
Code: Select all
user@Venue-11-Pro-7140:~$ lsmod | grep '^blue' | column -t
bluetooth 557056 31 btrtl,btintel,btbcm,bnep,btusb,rfcomm
user@Venue-11-Pro-7140:~$ lsmod | grep '^bt' | column -t
btusb 49152 0
btrtl 20480 1 btusb
btbcm 16384 1 btusb
btintel 24576 1 btusb
This is Bulldog initrd, as of Mar 2019.
Contains:
- busybox 1.27.0.git.2017.03 with guess-fstype patch (aboriginal 1.2.4)
- busybox init 1.27.0.git.2017.03 (musl 1.1.21), compiled separately for memory reasons
- dropbear 2018.76 (musl 1.1.21) # up to date as of Mar 2019
- losetup-klibc (losetup from klibc 2.0.6) # up to date as of Mar 2019
- ntfs-3g/ntfsfix 2017.3.23 (aboriginal 1.2.4 --disable-mtab) # up to date as of Mar 2019
*- wpa_supplicant (uclibc, br 2012.02) # needs update
*- iwconfig (uclibc, br 2012.02) # needs update
- sdparm 1.07 (can't remember I used musl or uclibc or klibc)
- LVM 2.2.02.177 (dmsetup/lvm) without udev - (musl 1.1.21 + util-linux 2.31.1) # 2018 version
- cryptsetup 2.1.0 (musl 1.1.21 + LVM 2.2.0.177 + util-linux 2.31.1) # jake's build # up to date as of Mar 2019
- e2fsck 1.43.9 (musl-libc) # 2018 version
- dosfsck 4.1 (musl 1.1.21) # up to date as of Mar 2019
- mount.cifs - from cifs-utils 16.8 (musl 1.121) # up to date as of Mar 2019
- mdadm 4.1 (musl 1.1.21) # up to date as of Mar 2019
- katz-git abb56e4c07 (musl, musl-gcc) # up to date as of Mar 2019
- evtest 91f924bc9a (musl 1.1.21) - 2019 # up to date as of Mar 2019
- strace 4.26 (musl 1.1.21) # up to date as of Mar 2019
- posixovl-deztructor-2015 (musl 1.1.15 with fuse 2.9.4) # up to date as of Mar 2019
- full fledged init, supports coldplug and hotplug
- barebones rc.sysinit & rc.cleanup
these binaries are upx-ed (3.0.8 ):
- ntfs-3g, ntfsfix, wpa_supplicant and friends, iw_config, dmsetup, lvm, strace,
sdparm, dropbear, cryptsetup, e2fsck, dosfsck, mount.cifs, mdadm, katz, evtest
posixovl
==> binaries that are only rarely used or only executed once.
Will require:
- squashfs.ko in /lib/modules/$KVER (none if it's already built-in)
- kernel_modules.sfs (optional)
Compiled standard 4.14 kernel with localyesconfig i.e. machine specific modules.
Kernel's standard firmware support seems adequate enough for text cli and wifi
net connect on this laptop.
Added KEXEC kernel (.config) elements
Added kexec binary (and man etc.) musl build with upx'd kexec bin
Added (upx --ultra-brute) screen - that requires pseudo terminal
Added simple-mtpfs with ultra-brute upx'd /usr/bin/simple-mtpfs
Added ccrypt (musl and upx'd) for ssh key protection purposes.
Added openssh
Added mc
Removed strace, lvm, ntfs-3g ntsfix, microcode for genuine intel
(as my laptop is radeon).
Removed mdadm (raid - which I dont use).
Removed /sbin/e2fsck and dosfsck
Removed vmcore-dmesg and kdump from the kexec build
Removed /usr/lib/kexec-tools folder and kexec_test file within that
Removed some things from kernel .config i.e. btrfs
Removed /usr/share/mc ...hints, skins, help files for non UK
Removed /usr/share/terminfo files for xterm and rxvt
Removed dropbear
After upx'ing all libs, found that the vmlinuz was LARGER
(with initrd within that) despite upx ultra-brute seemingly
compressing files quite tightly. Opted to remove all upx'ing
across all files, so went around all folders running upx -d *
Larger initramfs_data.cpio, but when built into the kernel which
is then xz compressed that compresses more tightly.
Code: Select all
# HID support
#
CONFIG_HID=y
CONFIG_HID_BATTERY_STRENGTH=y
CONFIG_HIDRAW=y
CONFIG_UHID=m
CONFIG_HID_GENERIC=y
Code: Select all
# HID support
#
CONFIG_HID=m
CONFIG_HID_BATTERY_STRENGTH=y
CONFIG_HIDRAW=y
CONFIG_UHID=m
CONFIG_HID_GENERIC=m
Yes James. I just copied over the ssh. sftp, scp ... etc files as is from the main fatdog, along with the libs (as indicated by ldd). With localyesconfig (i.e. machine specific modules built into the kernel) along with initramfs_data.cpio (initrd) also built into the kernel, and with all of those libs/bins ... it weighs in at a 11.7MB bzImage (vmlinuz) filesize for me. Pretty good forjamesbond wrote:@rufwoof: I presume in order to bring openssh and mc to the initramfs, you need to bring libc and ncurses as well (at the very least), right?
Code: Select all
#!/bin/ash
### bail out unless we're PID 1
[ $$ -eq 1 ] || exit 1
### configuration parameters
DEFAULT_DEVICE_DELAY=0 # seconds - default delay time for devices (so that they are recognised by kernel)
WIFI_ENABLE_TIMEOUT=${WIFI_ENABLE_TIMEOUT:-100} # unit of 1/10 seconds, max time to wait for wifi connection
KERNEL_POLL_MSECS=${KERNEL_POLL_MSECS:-5000} # default kernel polling value if unset
BOOT_KEYMAPS=/lib/boot/keymaps
### utilities - decz
# decz - decrements counter, and return true when it is zero
# $1 - name of variable to be decremented
decz() {
local curval
eval "curval=\$$1"
curval=$((curval-1))
[ $curval -le 0 ] && return 0
eval "$1=$curval"
return 1
}
### cmdline processing - waitdev
# wait for devices: sleep a specified number of seconds
process_waitdev() {
waitdev=${waitdev:-$DEFAULT_DEVICE_DELAY}
if [ "$waitdev" ]; then
OIFS="$IFS"; IFS=: ; set -- $waitdev; IFS="$OIFS"
if [ "$1" ] && [ "$1" -gt 0 ]; then
echo "Waiting $1 seconds for devices to be ready..."
sleep "$1"
fi
fi
}
### cmdline processing - net
process_net() {
[ "$net" = "ask" ] && read -p "net=" net 2>&1
[ -z "$net" ] && return;
OIFS="$IFS"; IFS=":"; set -- $net; IFS="$OIFS"
echo -n "Configure network "
# network type
case $1 in
wired)
# wired:dev:dhcp
# wired:dev:ip:ip-address:netmask:gateway:dns
echo -n "on $2 using "
ifconfig $2 up
;;
wpa|wpa2)
# wpa2:ssid:pass:dev:dhcp
# wpa2:ssid:pass:dev:ip:ip-address:netmask:gateway:dns (gateway and dns is optional)
echo -n "on $2 ($1) using "
ifconfig $4 up
wpa_supplicant -B -C/var/run/wpa_supplicant -Dwext -i$4
wpa_cli ap_scan 1 > /dev/null
wpa_cli add_net 0 > /dev/null
wpa_cli set_net 0 ssid "$2" > /dev/null
wpa_cli set_net 0 psk "$3" > /dev/null
wpa_cli select_net 0 > /dev/null
while [ "$(wpa_cli status | sed -ne '/wpa_state/ {s/wpa_state=//;p}')" != "COMPLETED" ];
do
sleep 0.1; decz WIFI_ENABLE_TIMEOUT && return
done;
iwconfig $4 power off # disable power management
shift 2
;;
adhoc)
# adhoc:ssid:dev:ip
# adhoc:ssid:channel:dev:ip:ip-address:netmask:gateway:dns
ifconfig $4 down
iwconfig $4 mode ad-hoc
ifconfig $4 up
iwconfig $4 essid "$2"
iwconfig $4 channel $3
iwconfig $4 power off # disable power management
shift 2
;;
*) echo "- wrong types, ignored."
;;
esac
# connection type
case $3 in
""|dhcp)
echo "dhcp"
udhcpc -i $2 > /dev/null
;;
ip)
echo "static ip $4/$5 gw $6 dns $7"
ifconfig $2 $4 netmask $5
[ "$6" ] && route add default gw $6
[ "$7" ] && echo nameserver $7 > /etc/resolv.conf
;;
*)
echo "unknown method $3, ignored."
;;
esac
ifconfig lo up # in any case bring loopback up also
}
### enable kernel polling
enable_kernel_polling() {
if ! grep -q block.events_dfl_poll_msecs /proc/cmdline; then # if not explicitly set
echo $KERNEL_POLL_MSECS > /sys/module/block/parameters/events_dfl_poll_msecs
fi
}
### cmdline processing - load keymaps and console fonts
process_pkeys() {
[ -z "$pkeys" ] && [ -e /etc/keymap ] && read pkeys < /etc/keymap
if [ "$pkeys" ]; then
# defaults - empty fontmap, iso-8859-1 codepage
rm -f /etc/fontmap
echo ISO-8859-1 > /etc/codepage
keymap=$(ls $BOOT_KEYMAPS/${pkeys}* | sed -ne '1 {s|^.*/||; s|.gz$||; p}')
if [ "$keymap" ]; then
echo Console keymap set to $keymap
echo "$keymap" > /etc/keymap
zcat "$BOOT_KEYMAPS/${keymap}.gz" | loadkmap
fi
echo 850 > /etc/codepage
fi
}
###################### main ##########################
# mount core filesystems
/bin/mount -t proc proc /proc # mount /proc first so /proc/self/exe works from now
mount -t sysfs sysfs /sys
if ! mount -t devtmpfs devtmpfs /dev 2> /null; then # /dev/null may not exist yet
# if no devtmpfs, use tmpfs and use mdev instead
mount -t tmpfs tmpfs /dev -o mode=755 # mode 755 is what devtmpfs uses
mdev -s
fi
[ -f /null ] && rm /null # Clear up the null file created above
[ ! -e /dev/shm ] && mkdir -p /dev/shm
[ ! -e /dev/pts ] && mkdir -p /dev/pts
[ "$TZ" ] && hwclock -t # set kernel timezone
# debugging and error logging
# comment out next two lines for greater info during bootup
! grep -q showerr /proc/cmdline && exec 2> /dev/initrd.err
grep -q debuginitrd /proc/cmdline && set -x
# enable polling
enable_kernel_polling
# process pkeys (hard build kernel (uk laptop specific) so I created /etc/keymap
# with content of "uk" - so we don't have to specify pkeys=uk kernel boot parameter
process_pkeys
# waitdev and wait for usb disk
process_waitdev
# configure network - after load modules, before basesfs
process_net
export HOME=/root
mount -t devpts non /dev/pts -o ptmxmode=0666,newinstance # pseudo terminal for screen
while :; do
setsid cttyhack /bin/sh
done
Code: Select all
title standard kernel/localyesconfig, cut down fatdog initrd
root (hd0,0)
kernel /bzImage net=wpa2:VMabcd1234-2G:abcd1234:wlan0:dhcp
Code: Select all
#!/bin/ash
CMD="pkeys=uk waitdev=5 "
CMD="$CMD basesfs=ram:uuid:5df8f89e-33d5-4720-b3f2-9c9030a718bd:/fd64.sfs "
CMD="$CMD savefile=direct:multi:uuid:5df8f89e-33d5-4720-b3f2-9c9030a718bd::"
clear
echo Loading Fatdog kernel
kexec -l fatdog-vmlinuz \
--initrd=fatdog-initrd.xz \
--command-line="$CMD" >/dev/null 2>&1
clear
echo "Booting Fatdog (multi-session save)"
kexec -e
Thanks, I was actually going to suggest an FAQ entry for anyone else foolish enough to buy such a device. Ironically, this bluetooth mouse is more stable in Fatdog64 than it was in my testing with Windows. I already have uhid loading at boot, however one remaining issue exists. Putting Fatdog64 into standby and resuming all works fine, but a reboot results in a duplicate entry for the bluetooth mouse - listed under bluetoothctl devices. This causes a random periodic cycle of disconnecting and reconnecting, and is resolved buy removing the older entry - bluetootctl remove <mac> and restarting the bluetooth service.jamesbond wrote:@jake29:
- I think you solved something that was even a mystery for me - I could never get an M$ mouse to work. Eventually I learnt my lesson NOT to buy M$ products at all. So thanks for figuring this one out. This may be another item for the FAQ.
If you want to load uhid at every boot, you can edit /etc/modules and put a line containing "uhid" (without the quotes) there.
- I built gnome-keyring and push it to the repo. I have not tested it myself though, so I cannot say for sure if it will work. You're welcome to test it if you wish.
From my research into the problem, it's not something exclusive to Microsoft bluetooth mice - it would have happened with any brand. But certainly the Microsoft bluetooth mobile mouse 3600 is often featured in issue reports, however I think that's just due it being one of the more popular bluetooth mice.rcrsn51 wrote:@jake: Are you claiming that your problem is specific to MS bluetooth mice and other brands work OK?
Thanks Jake. I'm updating bluez to 5.52.jake29 wrote: EDIT: Bluez 5.52 has fixed the 'duplicate device entry after reboot' issue for me.
The current build of bluez-alsa doesn't support aptx, because we don't have the underlying aptx library in it. In theory it would still work but it would fallback to using other codec.I'm considering upgrading to an Intel Wi-Fi 6 AX200 laptop card which features BT 5.0 - currently using an Intel AC 7265 with BT 4.2. I've ordered some aptX BT earbuds and BT 5.0 has 4x the range.