-
Notifications
You must be signed in to change notification settings - Fork 6
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
Fireface 802 support #4
Comments
yes, it does. I logged the sysex messages from the moment when turning on the ff802. I was also wondering (longer time ago) that it delivers two MIDI IN/OUT Ports in cc mode. |
Thanks! Yes, it shouldn't make a difference what OS you capture from as long as you're in CC mode. I've decoded the log you provided below (in the first column, register, in the second column, value). These register numbers (3F00-3F05) aren't used in this direction on the UCX II, but I do see some similarities between these and the UCX II registers 3080-3082.
I don't know about the others. So there are definitely some differences here, but enough similarities that I'm still optimistic. I'm going to write some small tool(s) so you can see the decoded packets easily and send some of your own. In particular, I think if you set 3F00 to cycling values (e.g.
|
Thanks for the explanation. Very interesting!
DSP Rev: 9
I should mention, that i usually do not use linux for audio stuff.
Maybe another hint, we can learn from: This is the log:
If you look into the manual of the Octamic XTC, there is a detailed MIDI implementation description in the last chapter. |
Nice, that makes me more confident that we're on the right track.
I appreciate you helping out even though you don't use Linux for audio! I've added a new tool at
There's no need for any GUI stuff, just create a file The Lua scripts are probably not useful for you in their current state. The wireshark dissector, rme.lua, needs to go in the wireshark plugin directory, and needs a patch to wireshark so it can hook into the SysEx dissector for the RME manufacturer ID. On the UCX II, I am able to set stuff like EQ via the rotary encoder and LCD. But I guess you can't do that on the 802. Assuming the the settings you change on the iPad persist when you connect back to the Mac, that should be sufficient. If you turn on some DSP function with the iPad and then do that same MIDI dump, I expect we'll see a different value for the 3F00 register. However, first see above about regtool; I think that might be a more productive thing to try.
They both use SysEx, but I think the similarities might end there. It's a good thought, though. Thanks again for your help! |
yes i saw your changes. and saw the new entries in the makefile. But:
sure - was just because just wanted to see your gtk magic ;-)
yeah, i know where dissectors should be located in ws...
thanks for the hint - will read more about that.
You are right. The 802 has no LCD. Just Potis on the front for the 4 Mic/Line Inputs. Only the 8 Analog Ins on the back have a "digital" gain. A good indicator for the capabilities of each unit is the possibility to load offline devices in Totalmix and see what is available there... Good idea - setting the dsps on iPad and then checking the 3F00 register. Will do that. And yes - the regtool would be fine - if i could compile it ^^ PS: I think, i have a similar purpose as you have: Just for fun in my free time. And always interested to learn. Thanks |
Are you on the latest commit? I thought this would be fixed by b8083e3 (at least, it fixed the Debian builder at https://builds.sr.ht/~mcf/job/1153088).
Ok, it shouldn't be too hard to fix it. I'll let you know in the other issue when you can try again.
Ah, great!
The patch I used is https://gitlab.com/mforney/wireshark/-/commit/b5e5f63c2cc5257b1fb3c971b96e72b92b5231a0. I still need to do more testing and submit it upstream.
:) |
sorry, didnt see you already fixed the regtool... compiling works. testing atm... |
sorry, i did sth wrong, had not restarted the unit... Now, after a power off-on of the unit: The ----- mark in the middle is the moment, after -w XX:YY 3F00 0001
|
Ok, this looks very promising. As expected, a couple more registers show up (3F10, 3F50), and we see the 3F02 register get further along its cycle, all the way to 0x39FF. Let's try a register dump. First, you can set up regtool to monitor register changes again, and this time ignore all these registers that the device is constantly sending, so we can focus on new ones.
Now, we can set up a loop to periodically change the value of 3F00, so we can see when any register changes:
(this fractional sleep is non-standard, but works in GNU sleep, so should work for you) At this point, I expect that if you turn one of the headphone volume knobs or input gain knobs, we'll see updates from the device, and we can begin to map the registers for the 802. The next thing to try is to trigger the device to dump all the registers for its current state. On the UCX II, this is done by setting 3E04 to 67CD. So we can try the same thing here.
|
haha thougt similar, i tried to make a shell script for that^^ from 0 to F
but doesnt work really clean. |
ok this one is iterating from 0 - F
and the filtered listener, just gives the following:
works as expected? or did i misunderstood sth? |
Yes, this is as expected. Do you see any output from the listener if you turn any of the knobs on the 802? Edit: err, I see you mentioned earlier about digital gain, so maybe you won't see anything. In any case, try setting 3E04 to 67CD to do a register dump. |
As you said: Tried to move the Potis. And as expected: Nothing happens, as they are analog.
the listener:
after the dump executed:
|
I see, makes sense. Though one thing I still don't understand: I did as you suggested and loaded an offline 802 in TotalMix. If the headphone volume controls are only analog, what do the volume sliders do for Phones 1 and Phones 2 in the output channel row of TotalMix? Is it just a separate volume stage?
Hmm, ok. Did you have the iterating writer running at the same time? That is needed to see any output from the register dump. If that doesn't work, it seems like it might be a bit trickier to map registers on the 802, since we don't have any way to control settings from the device. It might be necessary to set up a raspberry pi proxy between an iPad and the device to fully map all the registers. The process is fairly involved, but is described in doc/capture.md. The setup is you have an iPad hooked up to the raspberry pi's USB-C port, the 802 hooked up to one of the raspberry pi's USB-A ports, and then you enable I should be able to test at least part of this locally, but the iPad and rpi I was using were borrowed from a friend. Maybe I can get a hold of them again sometime this week to confirm that the setup should work. |
Got it, thanks for explaining.
Sorry, I should have been clearer. The iterator will cause the device to keep sending these register changes. It needs to be running while we do the register dump, so that we see the registers from the dump. Right now we aren't interested in these 3F** registers, which is why I suggested filtering further with Then, while the iterator and monitor are still running, we can send Thanks for your patience!
This is good, we see 3F02 hit 3BFF (channel 60), then roll back to 00FF (channel 1). This supports the theory that 3F02 is analogous to 3082 on the UCX II. |
ok, clear. give me a minute. BTW: I installed a fresh debian on a VM now. arm64 arch, as my M1 mac is the host. all the compilations (incl gtk) went flawlessly. And though i was afraid, the FF802 could maybe not being recognized properly due the forwarding of USB through the host - it seems to work flawlessly. |
1). run: 2). run: Maybe another useful info: The 802 in CC Mode shows just 22 In and 22 Out Channels, as i mentioned before. On Mac, the vm and raspi. Just checked this. Is it similar on the UCX II? Correct me if i am completly wrong (just want to understand): We filter out every register which matches [3F0[0-5]], [3F10] and [3F50] - OK clear. But maybe the 802 has another register which causes the dump?
So 3F02 - 3082 = 0E80 (the difference between 802 and UCX II) |
Sounds like you did everything correctly, thanks for trying. I think the 802 must use a different register than 3E04 (or possibly different value?).
On the UCX II, it presents a USB audio streaming interface in each direction which can be configured as 8, 14, 16, or 20 channel modes, but I can always control all 40 channels from oscmix. I suspect we'll be able to control all 30/30 channels via the MIDI sysex messages (assuming the iPad TotalMix can do this), even if they don't show up for input/output.
Yep, that's correct.
That's my current thinking as well. Another thing you could try: on the UCX II, channel 1 mute is is at 0502. You could try playing something to output channel 1, and see if
I think it's unlikely that it's just a simple offset for all registers, but it's not a bad thought. One other idea I had since you mentioned you had an M1 Mac. I think I read that you could install iPad apps on M1 Macs. I wonder if it's possble to install TotalMix for iPad on your Mac? If that's possible, I wonder if we could capture MIDI packets that way without the raspberry pi. Anyway, hopefully I'll be able to mess around with an iPad and rpi sometime in the next few days |
Ah ok - i understand. The pi mirrors the two USB Ports.Two differences:
Anyhow, this should not matter. Yesterday, i already tried to set up the mirror port on the pi. My /sys/class/udc is empty on pi3. Any ideas where i could get the location for my corresponding port, the 802 is connected to, else? Maybe you noticed this, too - I wonder that the vID (only in CC Mode) appears as 0x0424 (which is not RME), why?
Same on pi, Mac, other systems. @Sojuzstudio s descriptor on rme forum showed the same.
typo? i assume you meant a "mkdir functions/midi.usb0" at this point? and when i finally tried the Last question: Any idea how i could delete the mirroring stuff quite easy, just to revert the yesterdays experiment an in case i need to retry... I just diged my old iPad out from the black hole, but i has to be recharged - what else? ;-) can take a while and as the camkit adapter does not charge while its plugged in, i have to be patient^^. But i can prepare the usb mirorring in the meantime. |
Unfortunately, the 3B won't work because it doesn't have a UDC (USB Device Controller), so it can't act as a USB device when hooked up to the iPad. I have a 3B as well, so I had to borrow a 4 from a friend for this. I think only the 4, 5, and zero have a UDC.
Yeah, if the iPad supports TotalMix, it should work.
I noticed this as well. I'm not sure why it uses that vendor ID in CC mode.
Good catch. Fixed now.
I added some instructions for removing the gadget: echo '' > UDC # unbind from udc
rm configs/c.1/midi.usb0 # detach midi function from config
rmdir configs/c.1 functions/midi.usb0 # remove config and midi function
cd ..
rmdir g1 # remove gadget
I'm in a similar position. I have a borrowed iPad, but the battery is dead and I don't have any lightning cables. Need to get a hold of one in order to do more testing. Even without an 802, you've given me enough info that I should be able to get the iPad to detect the rpi as an 802, which will enable me to see what registers it sets during the initialization sequence. |
iPad has enough power about 5% to start it up. Looking in the TMFX App, which was configured the last time i had it plugged in, although the 802 is not plugged in atm: All 60 Channels are visible... So - you are right.
I am on VM atm so its 20:1... Have to mention, that the debian offers only choice between SPDIF or Analog for the 802 in gnome. In a second run i had the listener running without any filters...
Good point. You are right. I tried that log time ago... Now - Every Developer can decide if the (iOS/iPadOS) app should be also available on Mac Appstore. RME decided not to do this, what i understand totally.
-> Makes no sense the extra effort regarding maintenance, support , etc . But sure - i tried to grab the ipa from iPad and run it on the Mac. Was not possible to open, although i resigned it, and tried my best... But theoretically it should be possible. Another Idea i had is to run it in the iPad Simulator (provided with Xcode) but although i can sign in with my iCloud Account, Apple removed the AppStore on it - in older MacOS Versions it was possible... So - theoretically i am sure, it would be possible to get a way around this, but this would be e new "big project" with lot of time consuming... |
Would this help? https://freeusbanalyzer.com/ |
Thanks for the hint. but i found an easier solution to capture traffic - by activating the usbmon kernel module in the debian vm. |
I don't think it's possible. Here's some background: in USB, there are hosts and devices. A normal computer acts as a host, and normal devices (like the 802) act as devices. Some hardware like phones, tablets, and some raspberry pis have both a host controller and device controller. So you can connect devices to them (like a mouse or keyboard), but also connect them to a host, where they can act like a device (e.g. mass storage, ethernet for tethering, etc). If you hook up an iPad to a normal computer, the iPad will act like a device. We need it to be the other way around, so the iPad is the host, the linux machine acts as a device to the iPad, and a host to the 802. On hardware with a device controller, linux has a "gadget" subsystem that allows it to appear as a device. This is what doc/capture.md is using. Then, once that is set up, we can link up the MIDI ports between the gadget and the real device, so that the iPad can talk to the 802 through the linux machine, where we can log the MIDI traffic. @huddx01, since you seem to be familiar with iOS development: do you know if it's possible to log MIDI events to a device from another app on an iPad? I did look into this briefly, and came to the conclusion that it wasn't possible, but I could be wrong about this. But on the topic of USB capture, I thought of another avenue we could explore. On the UCX II, the registers used in CC-mode and USB-mode were essentially the same. But instead of encoding them as MIDI SysEx packets, they were written and read directly through a bulk endpoint (12 and 13). It seems that the 802 and the UCX II have the nearly same config in USB-mode. If you are able, could you try the following:
|
|
Thanks! Here we are seeing the 3F00 messages from the device, same as on linux. It is repeating What we need is to see the outgoing MIDI events from the TotalMix app to the 802. Is that possible? |
Checkin that atm... The problem i have, is that if the logging app is running on iPad, and FF802 ist plugged in, the old iPad does not respond anymore for touches. But i am working on it if i could write the logs directly into a file while the logger app is in background... And yes, i activated some effects in TM to check if we see the dsp load |
@michaelforney |
speaker-test -c2 -Dplughw:CARD=F802xxxxxx,DEV=0 -r32000 -> [3D21]=0005 speaker-test -c2 -Dplughw:CARD=F802xxxxxx,DEV=0 -r44100 -> [3D21]=0001 speaker-test -c2 -Dplughw:CARD=F802xxxxxx,DEV=0 -r48000 [3D21]=0002 .... so... 64000 -> [3D21]=0008 looks strange, think because speaker-test has chosen S16_LE, 2 channels, as i did not clearly define it...? |
Thanks, that seems to confirm that 3D21 is sample rate. It's expected that 32k, 64k, and 128k don't work in CC-mode: https://forum.rme-audio.de/viewtopic.php?id=37917 Ralf from RME sent me info about some of unknowns. Thank you! I've updated 802 doc accordingly. |
Thanks for giving me the hints via irc. I tried to put it together,
Maybe you could correct the things, where i a am wrong? |
Ok, most of my questions are clear now, by deeper looking into the contents from totalmix' xml/tmws files. So, no need to explain the above. |
@huddx01, can you check whether channel names are saved on the device? If you set a channel name on one computer, does that setting persist if you hook it up to another computer? I'm not seeing anything sent to the device when I change the channel name on the iPad (other devices do, but that may just because they have an LCD), so I think it might be part of the totalmix workspace only. Another thing to test is level info. I believe this is triggered by sending a SysEx message with empty payload and sub ID 2, i.e. I think I've pretty much finished with the 802 document in the wiki. Still unknown are 1EA0-1EB7, 1EC0-1EC3, and 1EFE-1EFF for output 1, as well as the corresponding ranges for outputs 2-30. But, I think these are probably fine to ignore for now. Next thing I'll work on is making a device abstraction for oscmix so it can support multiple devices, and then we can add support for new devices based on the doc. |
@michaelforney, i can confirm: No channel names are stored in the device. I did it this way:
i also tried this by storing the curr state into device (all 6 slots) before unplugging. While channel mutes of the INs and OUTs are stored - but Playbacks never save anything.
I did it via:
Thanks! I am sure we will find the unknown registers, too. Looking forward to be able to test, No problem if it will not cover full possibilities, or has some bugs. |
Great! How can i test that? Oh, if only UFX+ could also work.. |
It are just some first steps. @michaelforney started the basic abstraction here: 9cd349c So i just implemented a few registers, see https://github.com/michaelforney/oscmix/wiki/802 I prepared the fork https://github.com/huddx01/oscmix/tree/dev-ff802 for that. But wanted to wait before pushing the state until its usable. If you are interested i can commit my current state there. Makes sense if you want to develop/contribute to @michaelforney 's really awesome project. |
gtk build on Mac: levels seem to work. |
Any advice on how to get this installed on my machine so I can test? I use AvLinux MXe latest version |
Should be possible to compile for you. you need oscmix, alsaseqio or alsarowio. and the gtk ui. I modified some gtk stuff due to the channels for ff802. ping me via irc oscmix channel, if you got any problems. I should also mention, this is far away from being stable for now. |
I tried to test. I can't install sojuzstudio@sojuzstudio-System-Product-Name: |
It seems you checked out and tried to compile the main branch? But anyway, this should compile... If you want to test it for ff802 - i checked in the latest WIP state in generic-ff802 in my fork. Anyhow, i think it would make sense to assist you side by side. If you want, let me know when we could try this out together. |
Could it be due to the fact that I am using the Finnish-language Ubuntu studio 24.04? |
No, the system language should not affecting this. Sorry, i led you to the wrong tree in my last post. Please check out this branch (its my last wip state for ff802): I should also mention, that i developed (and compiled) it on Mac. And i had to use c++ due to several reasons. I will let you know here . |
OK, i edited the Makefile and device.h... It compiles without problems on my debian vm now:
Just updated the repo:. Here the zip with all content: I should mention, that i just compiled the stuff for now. Had no time to test it for now. Let me know, if you need further help. |
I got it complied now, I think. If you can advise a little further... |
make sure you are inside the path where the built files are located in terminal and try a "./" before alsarawio and oscmix. example in my case:
in second terminal, open the gtk ui:
|
It somehow works. Gui opens and signals are displayed. But the controls do not work, i.e. the device cannot be controlled sojuzstudio@sojuzstudio-System-Product-Name:~/oscmix-dev-generic$ GSETTINGS_SCHEMA_DIR=$PWD/gtk ./gtk/oscmix-gtk (oscmix-gtk:28611): Gtk-WARNING **: 23:57:31.478: Theme directory places/128 of theme ubuntustudio-dark has no size field (oscmix-gtk:28611): Gtk-WARNING **: 23:57:31.478: Theme directory places/scalable of theme ubuntustudio-dark has no size field (oscmix-gtk:28611): dconf-WARNING **: 23:57:31.520: unable to open file '/etc/dconf/db/site': Tiedoston “/etc/dconf/db/site” avaaminen epäonnistui: open() epäonnistui: Tiedostoa tai hakemistoa ei ole; expect degraded performance (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.336: value "21" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.375: value "22" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.415: value "23" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.455: value "24" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.495: value "25" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.534: value "26" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.574: value "27" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.614: value "28" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.654: value "29" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.694: value "30" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.559: value "21" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.600: value "22" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.642: value "23" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.684: value "24" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.725: value "25" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.767: value "26" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.809: value "27" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.850: value "28" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.892: value "29" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.934: value "30" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.732: value "21" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.769: value "22" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.807: value "23" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.844: value "24" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.881: value "25" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.919: value "26" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.956: value "27" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.994: value "28" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:35.032: value "29" of type 'gint' is invalid or out of range for property 'id' of type 'gint' (oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:35.069: value "30" of type 'gint' is invalid or out of range for property 'id' of type 'gint' |
mic/inst on off should work... but yes... as i told, its in WIP state ;-) |
You have done an amazing job. Let's see where this goes in the future. |
I just fiddled some code, so the channel FX and global FX will work as soon as i clean up my code a little and pull it to the branch. @Sojuzstudio If you have the possibility - could you please check/verify, if there is a real signal coming out on ADAT 15/16? Keep in mind, that you have to assign/move/click the (Mute) buttons/sliders first, as - as mentioned - the unit only reacts on on the controls atm... If you set it up, like in my pic - the Phones 11/12 the Mute button works. So, does the ADAT 13/14 and 15/16 work, too? |
I currently do not have any ADAT receiving devices in use. I only have ADAT transmitting microphone preamps. I don't know if you could connect the 802 ADAT output to the UFX+ ADAT input if they are both connected to the same computer. It requires a certain amount of connections, which is not possible at the moment. I'll see if I have time at some point, but I can't say when. |
If you connect ADAT 2 OUT Port from the 802 to an ADAT IN Port to your UFX+ via an optical cable, it should work, even when connected to same computer. On UFX+ you could route the ADAT IN to a headphone or sth... |
These warnings and some more details should be fixed... |
I'll look into these things later. I will get back to. |
Current wip state regarding FF802 can be checked now via the web UI here: So, no need to compile anything... Easiest way: (for Websocket option: you would need to setup a websocket bridge...) |
I tried the Web UI. It Mostly worked. I can adjust the levels, connect the phantom. Of course, it's still experimental. |
@huddx01 and sjzstudio on the RME forum have kindly provided CC-mode USB descriptors for the 802. It seems to be consistent with the UCX II, so hopefully shouldn't be too difficult to support.
My only concern is the vendor-specific interface with bulk endpoints.
sjzstudio also noted that when dumping from the second MIDI port, they saw
This seems to follow the same SysEx packet format: manufacturer ID 00 20 0Dh, device ID 10h, sub ID 00h indicating register change, and then a 5 byte payload
00 12 00 78 0B
, which is0x3f000900
after decoding. This means "register 0x3f00 set to 0x0900". On the UCX II, register 3F00 is only written from the host to the device and is used to get the device to tell us about any registers that changed, I didn't ever see it sent from the device to the host. So something is a bit different here.My next question is does the 802 ever send any different messages, or is it always the same exact bytes
F0 00 20 0D 10 00 00 12 00 78 0B F7
?The text was updated successfully, but these errors were encountered: