Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Kobo] Support USBMS exports #6552

Merged
merged 15 commits into from
Aug 25, 2020
Merged

[Kobo] Support USBMS exports #6552

merged 15 commits into from
Aug 25, 2020

Conversation

NiLuJe
Copy link
Member

@NiLuJe NiLuJe commented Aug 23, 2020

All on our lonesome, for everybody, no custom setups required.
With pretty pictures, Wi-Fi support, ample logging and no lazy unmounts.

Requires a matching PR in base to bundle the tool, which I'll possibly do tonight if my brain doesn't give up before that ;p.


This change is Reviewable

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 23, 2020

Depends on koreader/koreader-base#1165

Copy link
Member

@pazos pazos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent 👍

Copy link
Contributor

@poire-z poire-z left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fine.

@Frenzie Frenzie added this to the 2020.09 milestone Aug 24, 2020
@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 24, 2020

I'm open to a few more eyeballs on the C tool (especially as far as the strings are concerned, I guess), because as @pgaskin has already shown, I'm super great at stupid typos :D.

https://github.com/NiLuJe/KoboUSBMS

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 24, 2020

Other than that, I'll probably need people with shitty^Wold devices/FW to test it, make sure nothing implodes.

(And that the eject events are detected properly everywhere, especially, say, on the old Touch, because there's one USB controller in the list that I haven't seen anywhere. Unplug should be universal, though. But detecting ejects is way more fun :)).

Also, KSM people, because if there's an fd on onboard inherited by KSM (or, hell, KSM itself, I don't know how this thing works), it'll go kablooey.

(By kablooey I mean that it'll trip the failsafe, which is a shutdown after 90s, which should give people the time to connect to SSH over Wi-Fi, check the syslog, and run lsof to find the culprit, because 99.99% of failures should be something nasty holding an fd to onboard).

@poire-z
Copy link
Contributor

poire-z commented Aug 24, 2020

I'm open to a few more eyeballs on the C tool (especially as far as the strings are concerned, I guess),

Had a quick look, nothing suspicious - but I'm not that confortable with low-level C. I've been spoiled by crengine lString16 and stuff :)

Also, KSM people, because if there's an fd on onboard inherited by KSM (or, hell, KSM itself, I don't know how this thing works), it'll go kablooey.

I'm using KSM (the old 0.7 version, where everything is in /mnt/onboard - the newer 0.9 version has the essential stuff copied in the system partition, just so to allow it - and so you - to do that umount and export of /mnt/onboard via USB :).

Here's what I see from when KOReader is running:

  654 root       0:00 {ksmhome.sh} /bin/sh /mnt/onboard/.adds/kbmenu/onstart/ksmhome.sh
 1649 root       0:00 {start_koreader.} /bin/sh /mnt/onboard/.adds/kbmenu/onstart/start_koreader.sh
 1653 root       0:00 {koreader.sh} /bin/sh /mnt/onboard/.adds/koreader/koreade
 1662 root       1:14 {reader.lua} ./luajit ./reader.lua /mnt/onboard
 1663 root       0:00 {reader.lua} ./luajit ./reader.lua /mnt/onboard

~ # ls -la /proc/654/fd
lr-x------    1 root     root            64 Aug 24 20:42 0 -> /dev/null
lrwx------    1 root     root            64 Aug 24 20:42 1 -> /dev/console
lr-x------    1 root     root            64 Aug 24 20:42 10 -> /mnt/onboard/.adds/kbmenu/onstart/ksmhome.sh
lrwx------    1 root     root            64 Aug 24 20:42 2 -> /dev/console

~ # ls -la /proc/1649/fd
lr-x------    1 root     root            64 Aug 24 20:42 0 -> /dev/null
lrwx------    1 root     root            64 Aug 24 20:42 1 -> /dev/console
lr-x------    1 root     root            64 Aug 24 20:42 10 -> /mnt/onboard/.adds/kbmenu/onstart/start_koreader.sh
lrwx------    1 root     root            64 Aug 24 20:42 2 -> /dev/console

~ # ls -la /proc/1653/fd
lr-x------    1 root     root            64 Aug 24 20:43 0 -> /dev/null
l-wx------    1 root     root            64 Aug 24 20:43 1 -> /mnt/onboard/.adds/koreader/crash.log
lr-x------    1 root     root            64 Aug 24 20:43 10 -> /mnt/onboard/.adds/koreader/koreader.sh
lrwx------    1 root     root            64 Aug 24 20:43 11 -> /dev/console
lrwx------    1 root     root            64 Aug 24 20:43 12 -> /dev/console
l-wx------    1 root     root            64 Aug 24 20:43 2 -> /mnt/onboard/.adds/koreader/crash.log

~ # ls -la /proc/1662/fd
lr-x------    1 root     root            64 Aug 24 20:43 0 -> /dev/null
l-wx------    1 root     root            64 Aug 24 20:43 1 -> /mnt/onboard/.adds/koreader/crash.log
l-wx------    1 root     root            64 Aug 24 20:43 2 -> /mnt/onboard/.adds/koreader/crash.log
lrwx------    1 root     root            64 Aug 24 20:43 3 -> /dev/fb0
lr-x------    1 root     root            64 Aug 24 20:43 4 -> /dev/ntx_io
lr-x------    1 root     root            64 Aug 24 20:43 5 -> /dev/input/event0
lr-x------    1 root     root            64 Aug 24 20:43 6 -> /dev/input/event1
lr-x------    1 root     root            64 Aug 24 20:43 7 -> pipe:[3766]
lr-x------    1 root     root            64 Aug 24 20:43 8 -> /mnt/onboard/.LIBRARY/currentbook.epub
lrwx------    1 root     root            64 Aug 24 20:43 9 -> /mnt/onboard/.adds/koreader/cache/cr3cache/currentbook.epub.abcd1234.1.cr3

I'd say that for KSM users, this option might not be needed as we're used to quit KOReader to do that from KSM. So, if you can detect KSM is running (or just the old version?), you could just not show that option in the menu/ignore it for gestures.

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 24, 2020

I'd much rather trap them in a shutdown so that they realize they really shouldn't be using KSM these days :D.

Ooops. :D.

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 24, 2020

Okay, with the latest KoboUSBMS version, a busy mountpoint will just restart KOReader, after displaying the offending processes on screen ;).

@NiLuJe NiLuJe merged commit 6e3a3e8 into koreader:master Aug 25, 2020
@oldman63
Copy link

USBMS function is working good on Kobo Aura H2O v1 device.

Please add all related messages to i18n localisation page!

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 25, 2020

We can't, it's currently not i18n aware at all. And it's a separate project, which means it would take time and be... a separate project.

Ping @Frenzie to see how that would work? (assuming I do end switching to gettext to handle i18n).

@Frenzie
Copy link
Member

Frenzie commented Aug 25, 2020

The easiest for our translators is probably to tweak these lines slightly to include that one specific C file. Also best chance of people actually noticing them etc.

koreader/Makefile

Lines 550 to 558 in 6e3a3e8

pot: po
mkdir -p $(TEMPLATE_DIR)
$(XGETTEXT_BIN) --from-code=utf-8 \
--keyword=C_:1c,2 --keyword=N_:1,2 --keyword=NC_:1c,2,3 \
--add-comments=@translators \
reader.lua `find frontend -iname "*.lua" | sort` \
`find plugins -iname "*.lua" | sort` \
`find tools -iname "*.lua" | sort` \
-o $(TEMPLATE_DIR)/$(DOMAIN).pot

Alternatively you could transfer the repo to the KOReader organization. Then I could ask them to add it as a new component on Weblate. You could also do all that yourself without transferring anything, but then it'd be a wholly separate you thing which imo would just be a pain because you'd have to manage it all yourself.

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 25, 2020

Hmm, I'd also need to siphon the language from the settings and set LC_ALL/LANG in the tool's env...

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 25, 2020

Also, the font only has LGC (if even that) coverage. And we can't co-opt our stock fonts, I need a stock NerdFont one.

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 25, 2020

Okay, not happening, locales are even more broken than I already knew on Kobo.

libintl won't even try to look for the .mo if the (libc) locale isn't generated.


No fr_FR libc locale:

17:36:42.144053 [2abb57dc] chdir("/")   = 0
17:36:42.144314 [2ab13f3c] open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 5
17:36:42.144717 [2ab5d1dc] open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:36:42.145055 [2ab13730] open("/usr/lib/locale/fr_FR.UTF-8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:36:42.145308 [2ab13730] open("/usr/lib/locale/fr_FR.utf8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:36:42.145536 [2ab13730] open("/usr/lib/locale/fr_FR/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:36:42.145739 [2ab13730] open("/usr/lib/locale/fr.UTF-8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:36:42.145946 [2ab13730] open("/usr/lib/locale/fr.utf8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:36:42.146152 [2ab13730] open("/usr/lib/locale/fr/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
bindtextdomain: /mnt/onboard/.foo/usbms/l10n
textdomain: usbms
17:38:12.635069 [2abb49ac] open("/dev/fb0", O_RDWR|O_CLOEXEC) = 5
17:38:12.635306 [2abb49ac] open("/mnt/onboard/.kobo/version", O_RDONLY|O_CLOEXEC) = 6
17:38:12.638042 [2abb49ac] open("/dev/input/event0", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 7
17:38:12.645580 [2ab1cfec] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=2952, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
17:38:12.645873 [2abb49ac] open("/dev/ntx_io", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 8
17:38:12.653874 [2abb49ac] open("/mnt/onboard/.foo/usbms/resources/fonts/CaskaydiaCove_NF.ttf", O_RDONLY|O_CLOEXEC) = 9
17:38:12.666163 [2abb49ac] open("/mnt/onboard/.foo/usbms/resources/img/koreader.png", O_RDONLY) = 9

With an en_US libc locale (that's already non-standard, Kobo ships without any):

17:37:47.877692 [2abb57dc] chdir("/")   = 0
17:37:47.877927 [2ab13f3c] open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 5
bindtextdomain: /mnt/onboard/.foo/usbms/l10n
textdomain: usbms
17:37:47.879503 [2abb49ac] open("/dev/fb0", O_RDWR|O_CLOEXEC) = 5
17:37:47.879815 [2abb49ac] open("/mnt/onboard/.kobo/version", O_RDONLY|O_CLOEXEC) = 6
17:37:47.882525 [2abb49ac] open("/dev/input/event0", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 7
17:37:47.889979 [2ab1cfec] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=2922, si_uid=0, si_status=0, si_utime=1, si_stime=0} ---
17:37:47.890272 [2abb49ac] open("/dev/ntx_io", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 8
17:37:47.898092 [2abb49ac] open("/mnt/onboard/.foo/usbms/resources/fonts/CaskaydiaCove_NF.ttf", O_RDONLY|O_CLOEXEC) = 9
17:37:47.906527 [2ab5d1dc] open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:37:47.906979 [2ab18380] open("/mnt/onboard/.foo/usbms/l10n/en_US.UTF-8/LC_MESSAGES/usbms.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
17:37:47.907302 [2ab18380] open("/mnt/onboard/.foo/usbms/l10n/en_US.utf8/LC_MESSAGES/usbms.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
17:37:47.907577 [2ab18380] open("/mnt/onboard/.foo/usbms/l10n/en_US/LC_MESSAGES/usbms.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
17:37:47.907815 [2ab18380] open("/mnt/onboard/.foo/usbms/l10n/en.UTF-8/LC_MESSAGES/usbms.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
17:37:47.908061 [2ab18380] open("/mnt/onboard/.foo/usbms/l10n/en.utf8/LC_MESSAGES/usbms.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
17:37:47.908970 [2ab18380] open("/mnt/onboard/.foo/usbms/l10n/en/LC_MESSAGES/usbms.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
17:37:47.913094 [2abb49ac] open("/mnt/onboard/.foo/usbms/resources/img/koreader.png", O_RDONLY) = 9

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 25, 2020

For posterity's sake:

diff --git a/Makefile b/Makefile
index f06fb9a..e43b971 100644
--- a/Makefile
+++ b/Makefile
@@ -148,6 +148,7 @@ kobo: armcheck release
        ln -sf $(CURDIR)/scripts/fuser-check.sh Kobo/scripts/fuser-check.sh
        ln -sf $(CURDIR)/resources/img/koreader.png Kobo/resources/img/koreader.png
        ln -sf $(CURDIR)/resources/fonts/CaskaydiaCove_NF.ttf Kobo/resources/fonts/CaskaydiaCove_NF.ttf
+       ln -sf $(CURDIR)/l10n Kobo/l10n
        ln -sf $(CURDIR)/$(OUT_DIR)/usbms Kobo/usbms
        tar --mtime=@$(USBMS_EPOCH) --owner=root --group=root -cvzhf $(OUT_DIR)/KoboUSBMS.tar.gz -C Kobo .
 
diff --git a/libevdev b/libevdev
--- a/libevdev
+++ b/libevdev
@@ -1 +1 @@
-Subproject commit 1f54f82f700e847a5d5892ee68e31cb2e007af4e
+Subproject commit 1f54f82f700e847a5d5892ee68e31cb2e007af4e-dirty
diff --git a/usbms.c b/usbms.c
index db26ffb..68b9a5f 100644
--- a/usbms.c
+++ b/usbms.c
@@ -386,6 +386,13 @@ int
                goto cleanup;
        }
 
+       // gettext
+       setlocale(LC_ALL, "");
+       char resource_path[PATH_MAX] = { 0 };
+       snprintf(resource_path, sizeof(resource_path) - 1U, "%s/l10n", abs_pwd);
+       fprintf(stderr, "bindtextdomain: %s\n", bindtextdomain("usbms", resource_path));
+       fprintf(stderr, "textdomain: %s\n", textdomain("usbms"));
+
        // Setup FBInk
        FBInkConfig fbink_cfg = { 0 };
        fbink_cfg.row         = -5;
@@ -463,14 +470,13 @@ int
        FBInkOTConfig ot_cfg         = { 0 };
        ot_cfg.margins.top           = (short int) fbink_state.font_h;
        ot_cfg.size_px               = (unsigned short int) (fbink_state.font_h * 2U);
-       char resource_path[PATH_MAX] = { 0 };
        snprintf(resource_path, sizeof(resource_path) - 1U, "%s/resources/fonts/CaskaydiaCove_NF.ttf", abs_pwd);
        if (fbink_add_ot_font(resource_path, FNT_REGULAR) != EXIT_SUCCESS) {
                PFLOG(LOG_CRIT, "Failed to load TTF font!");
                rv = EXIT_FAILURE;
                goto cleanup;
        }
-       fbink_print_ot(fbfd, "USB Mass Storage", &ot_cfg, &fbink_cfg, NULL);
+       fbink_print_ot(fbfd, _("USB Mass Storage"), &ot_cfg, &fbink_cfg, NULL);
        fbink_cfg.ignore_alpha  = true;
        fbink_cfg.halign        = CENTER;
        fbink_cfg.scaled_height = (short int) (fbink_state.screen_height / 10U);
@@ -517,7 +523,7 @@ int
 
                print_icon(fbfd, "\uf6ff", &fbink_cfg, &icon_cfg);
                fbink_print_ot(fbfd,
-                              "\uf071 Please disable USBNet manually!\nPress the power button to exit.",
+                              _("\uf071 Please disable USBNet manually!\nPress the power button to exit."),
                               &msg_cfg,
                               &fbink_cfg,
                               NULL);
diff --git a/usbms.h b/usbms.h
index 92628aa..bc8c324 100644
--- a/usbms.h
+++ b/usbms.h
@@ -39,6 +39,9 @@
 #include <syslog.h>
 #include <unistd.h>
 
+#include <locale.h>
+#include <libintl.h>
+
 #include "FBInk/fbink.h"
 #include "libue/libue.h"
 #include <libevdev/libevdev.h>
@@ -55,6 +58,9 @@
 // Apparently the libevdev version string isn't available anywhere, so, fake it
 #define LIBEVDEV_VERSION "1.9.1"
 
+// gettext
+#define _(String) gettext(String)
+
 // Logging helpers
 #define LOG(prio, fmt, ...) ({ syslog(prio, fmt, ##__VA_ARGS__); })
xgettext --from-code=utf-8 usbms.c -d usbms -p po -o templates/usbms.pot --keyword=_ --add-comments=@translators
msginit -i po/templates/usbms.pot -l fr_FR.UTF-8 -o po/fr_FR/usbms.po
msgfmt po/fr_FR/usbms.po -o l10n/fr_FR/LC_MESSAGES/usbms.mo

Also, xgettext's comment feature doesn't understand functions broken down across multiple lines.

i.e.,

// @translators
printf(_("foo"));

vs.

// @translators
printf(
  _("foo"));

@Frenzie
Copy link
Member

Frenzie commented Aug 25, 2020

Also, xgettext's comment feature doesn't understand functions broken down across multiple lines.

What if you wrote (ugly, I know):

printf(
// @translators
  _("foo"));

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 25, 2020

Also, xgettext's comment feature doesn't understand functions broken down across multiple lines.

What if you wrote (ugly, I know):

printf(
// @translators
  _("foo"));

Yep, that works ;).

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 25, 2020

That's some truly broken shit there, Jim. >_<".

@poire-z
Copy link
Contributor

poire-z commented Aug 26, 2020

I'd much rather trap them in a shutdown so that they realize they really shouldn't be using KSM these days :D.
Ooops. :D.

That's not really nice :)
Got shutdowned this morning (offending processes: the 2 KSM ones), and I realized I can't even prevent the popup when plugging the USB. An option in the menu to prevent the popup would be nice for senior KSM users :) Dunno if it can feel of use for other users.
(I since patched my koreader install and commented canToggleMassStorage = yes to not have the menu items, and changed a else to elseif false then in UIManager. So, I'm fine either way.)

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 26, 2020

@poire-z: The merged version doesn't shutdown anymore in this instance, it does this:

usbms

:?

(i.e., KOReader restarts when pressing power/after 30s).


The popup was a conscious decision, because I find that utterly annoying (i.e., what if I just want to charge, damn it?!), but I agree it's an opinionated decision. The setting still applies for the menu entry, though.

I mean, I could add another setting specific to the plug-in event? (It exists in Nickel, albeit as a hidden manual undocumented setting).

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 26, 2020

@poire-z: Tweak the confirmation setting in a583141 ;).

@poire-z
Copy link
Contributor

poire-z commented Aug 26, 2020

As a proud member of the KSM Preservation Society, I ... don't care :) (changes nothing with seeing the popup where we know we should not hit anything but Cancel).
But may be seeing the USB mass storage submenu with only one sad lonesome item might incite you to add [ ] Never enable USB mass storage to give it company and check it in UIManager ? (and possibly in an enabled_func for Start USB storage ?)

The merged version doesn't shutdown anymore in this instance, it does this:
KOReader restarts when pressing power/after 30s).

Did only a short press with this morning nightly - and it did not restart. Went to shutdown after another minute. (dunno what you mean with "the merged version")

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 26, 2020

The merged version doesn't shutdown anymore in this instance, it does this:
KOReader restarts when pressing power/after 30s).

Did only a short press with this morning nightly - and it did not restart. Went to shutdown after another minute. (dunno what you mean with "the merged version")

I meant what ended up in the nightly vs. what was in during most of this PR, in case you tried a pre-release build ;).

The restart requires startup script changes, which requires a full exit -> start cycle to pickup ;).

@NiLuJe
Copy link
Member Author

NiLuJe commented Aug 26, 2020

But may be seeing the USB mass storage submenu with only one sad lonesome item might incite you to add [ ] Never enable USB mass storage to give it company and check it in UIManager ? (and possibly in an enabled_func for Start USB storage ?)

Done (44ee96f) :).

@poire-z
Copy link
Contributor

poire-z commented Aug 26, 2020

Thanks :)

@carmelocotonto
Copy link

Hi,
I think that I haven't understand this new feature. I connect my kobo clara to my PC windows 10 and nothing happens, after 30 seconds Koreader restarts. Never PC detects kobo clara. Do i have to do anything besides connect ?
Thanks

@NiLuJe
Copy link
Member Author

NiLuJe commented Nov 27, 2020

On which KOReader version, on which FW version, what's actually shown on screen, and a crash.log please.

@carmelocotonto
Copy link

Well, I have got the last Koreader version (2020.11) on the last FWversion (4.25.15875)
I upload two pictures and crash.log (today crash.log)

crash.log

20201127_170001
20201127_170029

@NiLuJe
Copy link
Member Author

NiLuJe commented Nov 27, 2020

Well, reading the screen would have been a good start: your device is in USBNet mode ;).

Let me guess: you're using KSM 9?

@carmelocotonto
Copy link

No, I am not using KSM 9, BUT.... It is true that I did several changes on device for having usb access for WIFI and usb access for cable. I followed the instructions on the page
https://yingtongli.me/blog/2018/07/30/kobo-telnet.html

I understand this is the problem, but I don't know how 'disable usb manually'. I think I will have to delete several code lines into

ac
plug
usb

in usr/local/kobo/udev AND leave only telnet over wifi

If you can confirm this, I will change the files and I 'will kill' usbnet for telnet access. ;)

Thanks

@NiLuJe
Copy link
Member Author

NiLuJe commented Nov 27, 2020

Oh god >_<".

This kind of thing is a terrible idea to begin with, and, fun fact: FW 4.25 actually updated the inittab, proving the point that modifying it was a terrible idea to begin with.

Revert all of that insanity, and invest in something that doesn't mangle the guts of the OS and doesn't require you to jump through an insane amount of hoops (oh, hai!).

@carmelocotonto
Copy link

NiLuJe: Oh god >_<".

Ha,ha,ha,ha.

NiLuJe: This kind of thing is a terrible idea to begin with, and, fun fact: FW 4.25 actually updated the inittab, proving the point that modifying it was a terrible idea to begin with.

Of ,yes, yes, I am very cautious. On every FW updated I look into FW for my modified files. I updated my inittab.

NiLuJe: Revert all of that insanity, and invest in something that doesn't mangle the guts of the OS and doesn't require you to jump through an insane amount of hoops (oh, hai!).

Yes, I know your great job, but this paragraph was terrible for me:

"This is basically a collection of all the custom binaries I use throughout my Kindle hacks,
but built for the Kobo, put in a single package, and symlinked (when not clashing) in the PATH.
That includes, among other things, stuff like less, htop, strace, ltrace, lsof, fbgrab, sqlite3, elfutils, rsync, xzdec, zstd-decompress,
lz4, ImageMagick, gawk, nano, ZSH, ag, tmux, GDB, gprof, perf, objdump, cURL, evtest, evemu, FBInk, the full OpenSSH suite, jq,
bsdtar, lftp, and a CLI Python 2.7 & Python 3.8 build with quite a few third-party modules (HTTPie, requests & co, Pillow, wand, ...)."

My god, I don't understand 90% of the words 8))
If I install your package, how can I have telnet over wifi, that it is my main interest?

@NiLuJe
Copy link
Member Author

NiLuJe commented Nov 27, 2020

By doing absolutely nothing besides installing it: It's enabled by default, and will actually persist across FW updates without further interaction.

(Same for SSH, because telnet is the worst).

@carmelocotonto
Copy link

Ok. I'll do it. I'll 'clean' my device 8)) and I'll install your package. thanks again

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants