T42 | <adampigg> @b100dian so, i think my driver only supports 3 effects ... i wonder what i should choose! | 10:24 |
---|---|---|
T42 | <b100dian> 3 custom and one constant I hope? | 10:25 |
T42 | <adampigg> not sure, how do i check that? | 10:27 |
T42 | <b100dian> In tucana's config there's constant used for calls and alarms | 10:29 |
T42 | <adampigg> ah, i didnt see 'constant' listed as a type | 10:35 |
T42 | <adampigg> yeah, that works | 10:36 |
T42 | <adampigg> infact, only 2 custom can be uploaded, not 3! | 10:36 |
T42 | <adampigg> even though the driver is created with | 10:37 |
T42 | <adampigg> ret = input_ff_create(input_dev, AW_EFFECT_NUMBER); | 10:37 |
T42 | <adampigg> #define AW_EFFECT_NUMBER (3) | 10:37 |
T42 | <adampigg> ah, ff-core says >= max_effects returns enospc | 10:38 |
T42 | <adampigg> if (id >= ff->max_effects) { | 10:38 |
T42 | <adampigg> ret = -ENOSPC; | 10:38 |
T42 | <adampigg> goto out; | 10:38 |
T42 | <adampigg> } | 10:38 |
T42 | <b100dian> It sounds as if it doesn't store the effects driver side and you need to upload, play, delete them? Cache_effects in the ini should do that | 10:40 |
T42 | <adampigg> @b100dian it sort of works, for a bitm then stops .. i see this in logs, you seen? | 12:48 |
T42 | <adampigg> Vibra erase effect: Invalid argument | 12:48 |
T42 | <adampigg> ioctl(12, EVIOCRMFF, -1) = -1 EINVAL (Invalid argument) | 12:50 |
T42 | <adampigg> dup(2) = 15 | 12:50 |
T42 | <adampigg> fcntl(15, F_GETFL) = 0x20002 (flags O_RDWR|O_LARGEFILE) | 12:50 |
T42 | <adampigg> fstat(15, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}) = 0 | 12:50 |
T42 | <adampigg> write(15, "Vibra erase effect: Invalid argu"..., 37Vibra erase effect: Invalid argument | 12:50 |
T42 | <adampigg> i guess -1 is a bad ID | 12:50 |
T42 | <b100dian> Hmm yes, only when uploading an effect is -1 expected, then an id should've been returned. | 13:39 |
T42 | <David_Telegra> Hi, Sailfish os ported is paid version ? | 13:51 |
T42 | <David_Telegra> I have poco x3 pro, and I'd like to try it. | 13:51 |
T42 | <David_Telegra> Do you have a general tutorial ? | 13:51 |
T42 | <David_Telegra> I found the git depot but I don't know what file to download. | 13:51 |
T42 | <David_Telegra> Thanks in advance 🙏 | 13:51 |
User54059534 | @David_Telegra I guess you can try one of the community ports from here: https://wiki.merproject.org/wiki/Adaptations/libhybris | 14:29 |
T42 | <Verevka86> I ported it to this device (re @David_Telegra: Hi, Sailfish os port...) | 14:31 |
T42 | <b100dian> @adampigg it seems AW_DURATION_DECIDE_WAVEFORM controls the waveform for the haptic? Do you have the `duration %d, select index %d` log? | 14:39 |
T42 | <b100dian> there's a behavior in tucana's driver that is not in your case, that is, for a custom effect, my driver retursn the duration in the rest of the custom data https://github.com/b100dian/Xiaomi_Kernel_OpenSource/blob/tucana-hybris-17.1/drivers/input/misc/drv260x_input.c#L1213-L1217 | 14:40 |
T42 | <adampigg> i do... (re @b100dian: @adampigg it seems A...) | 14:41 |
T42 | <b100dian> So this line would not have the same meaning for your device https://github.com/sailfishos/ngfd/blob/master/src/plugins/ffmemless/plugin.c#L493 | 14:41 |
T42 | <b100dian> It means that we need to check if custom_data[1] and [2] remain 0 and not use that as playback_time in that case | 14:42 |
T42 | <adampigg> https://paste.mozilla.org/LeSfVZLJ | 14:42 |
T42 | <b100dian> Do you have such logs with the erase error, maybe journal + paired with ngfd -vvv ? or two separate logs, dmesg and ngfd -vvv | 14:49 |
T42 | <adampigg> this is kernel + ngfd when generating a tap https://paste.mozilla.org/XKg2OBTK (re @b100dian: Do you have such log...) | 14:53 |
T42 | <David_Telegra> Yeah ! | 15:47 |
T42 | <David_Telegra> Thanks a lot, I see you in the git, and other for UBTouch and Droidian I think ! | 15:47 |
T42 | <David_Telegra> I'm lost I don't know where are the file to flash on the phone. | 15:47 |
T42 | <David_Telegra> Can you give me a link ? | 15:47 |
T42 | <David_Telegra> Thanks in advance (re @Verevka86: I ported it to this ...) | 15:47 |
T42 | <b100dian> @adampigg don't know if that error is benign, since it doesn't even reach your driver because the ff-core doesn't find a matching effect, but I don't remember how this ngfd plugin was supposed to work: in ffmemless/plugin.c#L483 setup effects, each of them is uploaded and not erased (which suprises me) even if cache_effects is true (this means that the driver needs to have space for all the list of effects defined). And that the memcpy at #L | 18:02 |
T42 | <b100dian> Each play also does an upload. That means that the intent was to upload before playing and delete when done - so only the initial setup uploads remain undeleted..? | 18:02 |
T42 | <b100dian> Do you have space errors at init/setup or after usage? Do you use the default effect too (that is set up in a different code path) | 18:03 |
T42 | <b100dian> As I said earlier, you problably don't want line ffmemless/plugin.c#L493 (or only execute it if custom_data[1] and [2] are not both 0) | 18:04 |
T42 | <b100dian> Another very different idea: just go back to Android and strace the ffmemless device usage, maybe there's some other thing to watch out for (I wonder if strace is still shipped with android? or was it a lineage only thing?) | 18:05 |
T42 | <b100dian> Also do you alwasy get "select index 2"? Maybe try different durations | 18:13 |
T42 | <adampigg> @b100dian ive got 3 terminals on the device ... and commented out all the effects from 51-ffmemless.ini | 18:18 |
T42 | <adampigg> i see when the vibration stops working, it looks to be an internal ngfd issue | 18:18 |
T42 | <adampigg> [17.18446744073709551343] DEBUG: dbus: reply error: org.freedesktop.DBus.Error.LimitsExceeded (Too many simultaneous requests.) | 18:19 |
T42 | <adampigg> seems like its waiting for something before issuing anther effect | 18:19 |
T42 | <b100dian> I think it's the zero playback time: `if (data->playback_time) { ... g_timeout_add(data->playback_time + 20, ffm_playback_done, data)` | 18:20 |
T42 | <b100dian> so basically ffm_playback_done is never called | 18:21 |
T42 | <btchdRPR> this is the weirdest hang ever | 20:35 |
T42 | <btchdRPR> ``` | 20:35 |
T42 | <btchdRPR> writev(27, [{iov_base=NULL, iov_len=0}, {iov_base="-----BEGIN PGP PUBLIC KEY BLOCK-"..., iov_len=3116}], 2) = 3116 | 20:35 |
T42 | <btchdRPR> write(27, "\n", 1) = 1 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 | 20:35 |
T42 | <btchdRPR> writev(27, [{iov_base="", iov_len=0}, {iov_base="-----BEGIN PGP PUBLIC KEY BLOCK-"..., iov_len=3128}], 2) = 3128 | 20:35 |
T42 | <btchdRPR> write(27, "\n", 1) = 1 | 20:35 |
T42 | <btchdRPR> close(27) = 0 | 20:35 |
T42 | <btchdRPR> stat64("/var/tmp/zypp.PWfTnk/TmpFile.6Z4cQk", {st_mode=S_IFREG|0600, st_size=6246, ...}) = 0 | 20:35 |
T42 | <btchdRPR> rt_sigaction(SIGPIPE, NULL, {sa_handler=0xf69fae60, sa_mask=[], sa_flags=SA_SIGINFO}, 8) = 0 | 20:35 |
T42 | <btchdRPR> pipe([27, 28]) = 0 | 20:35 |
T42 | <btchdRPR> fcntl64(27, F_SETFD, FD_CLOEXEC) = 0 | 20:35 |
T42 | <btchdRPR> clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xf612c968) = 1884067 | 20:35 |
T42 | <btchdRPR> waitpid(1884067, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 1884067 | 20:35 |
T42 | <btchdRPR> --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1884067, si_uid=0, si_status=0, si_utime=0, si_stime=0} --- | 20:35 |
T42 | <btchdRPR> close(28) = 0 | 20:35 |
T42 | <btchdRPR> read(27,``` | 20:35 |
T42 | <btchdRPR> i am still debugging this by the way (re @btchdRPR: igor@debian:~$ sfoss...) | 20:35 |
T42 | <btchdRPR> wtf? : https://irc.thaodan.de/.imgstore/50c21ca7/file_6919.jpg | 20:52 |
T42 | <btchdRPR> what lol : https://irc.thaodan.de/.imgstore/50c21ca7/file_6919.jpg | 20:52 |
T42 | <btchdRPR> i see in strace logs, a lot of this: | 20:52 |
T42 | <btchdRPR> | 20:52 |
T42 | <btchdRPR> 1888006 close(539308) = -1 EBADF (Bad file descriptor) | 20:52 |
T42 | <btchdRPR> 1888006 close(539309) = -1 EBADF (Bad file descriptor) | 20:52 |
T42 | <btchdRPR> 1888006 close(539310) = -1 EBADF (Bad file descriptor) | 20:52 |
T42 | <btchdRPR> | 20:52 |
T42 | <btchdRPR> from 0 to... infiniry | 20:52 |
T42 | <btchdRPR> i see in strace logs, a lot of this: | 20:52 |
T42 | <btchdRPR> | 20:52 |
T42 | <btchdRPR> 1888006 close(539308) = -1 EBADF (Bad file descriptor) | 20:52 |
T42 | <btchdRPR> 1888006 close(539309) = -1 EBADF (Bad file descriptor) | 20:52 |
T42 | <btchdRPR> 1888006 close(539310) = -1 EBADF (Bad file descriptor) | 20:52 |
T42 | <btchdRPR> | 20:52 |
T42 | <btchdRPR> from 0 to... infinity (edited) | 20:52 |
T42 | <btchdRPR> hahahaha i did it!!! | 20:53 |
T42 | <btchdRPR> ulimit -n 65536 | 20:53 |
Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!