Re: ESP32 I2S audio recording is incomplete
Hi Simona, SD Cards have busy time times of 500ms max (per spec) for saving data internally. I saw SD Cards taking over a second of busy time. You can check with the Oszilloskop. I think data0 is the pin that signalize busy... Per design, you need a stream buffer that can handle your audio stream up to 500ms... Regards, Simon -- Ingenieurbüro-Filgis USt-IdNr.: DE305343278 -- sent by mobile phone Alan C. Assis schrieb am Do., 19. Okt. 2023, 23:36: > Hi Simona, > > On 10/19/23, Simona Toaca wrote: > > Hello, > > I am trying to record audio using a MEMS microphone, but the final > > recording is missing parts periodically (for example, with a sample rate > of > > 8kHz, there are parts ~1s long missing once every ~10-11s. Using a sample > > rate of 48kHz, the period is ~1s long). This is my first time working > with > > I2S and I can't figure out what causes this behaviour. > > > > My setup is as follows: > > - the microphone has 24-bit depth in a 32-bit word (MSB first) when > > transmitting data > > - i am using nxrecorder to record the pcm audio onto an SD card (device > > pcm_in0) > > - to listen to the recording i import the file into Audacity (24-bit, Big > > Endian) > > > > Defconfig regarding audio: > > CONFIG_AUDIO=y > > CONFIG_AUDIO_BUFFER_NUMBYTES=6144 (from the i2s buffer which is 8192 > bytes, > > 3/4 of it is "useful" info, 6144 bytes in total) > > CONFIG_AUDIO_DMA=y > > CONFIG_AUDIO_FORMAT_RAW=y > > CONFIG_AUDIO_I2S=y > > CONFIG_DMA=y > > CONFIG_DMA_LINK=y > > CONFIG_DRIVERS_AUDIO=y > > CONFIG_ESP32_I2S0=y > > CONFIG_ESP32_I2S0_BCLKPIN=25 > > CONFIG_ESP32_I2S0_DATA_BIT_WIDTH_24BIT=y > > CONFIG_ESP32_I2S0_DINPIN=26 > > CONFIG_ESP32_I2S0_SAMPLE_RATE=8000 > > CONFIG_ESP32_I2S0_WSPIN=27 > > CONFIG_ESP32_I2S=y > > CONFIG_I2S_DMADESC_NUM=4 > > > > I tried modifying the number of audio buffers and also making them > bigger, > > but that did not solve the problem. > > Any ideas on what could cause this? > > > > Could it be something related to SDCard storage? Maybe it needs some > optimization! > > Please try using a RAMDISK of 1MB+ and save the file to it. > > If it works we will know the SDCard could be the limitation of this > configuration. > > BR, > > Alan >
Re: ESP32 I2S audio recording is incomplete
Hi Simona, On 10/19/23, Simona Toaca wrote: > Hello, > I am trying to record audio using a MEMS microphone, but the final > recording is missing parts periodically (for example, with a sample rate of > 8kHz, there are parts ~1s long missing once every ~10-11s. Using a sample > rate of 48kHz, the period is ~1s long). This is my first time working with > I2S and I can't figure out what causes this behaviour. > > My setup is as follows: > - the microphone has 24-bit depth in a 32-bit word (MSB first) when > transmitting data > - i am using nxrecorder to record the pcm audio onto an SD card (device > pcm_in0) > - to listen to the recording i import the file into Audacity (24-bit, Big > Endian) > > Defconfig regarding audio: > CONFIG_AUDIO=y > CONFIG_AUDIO_BUFFER_NUMBYTES=6144 (from the i2s buffer which is 8192 bytes, > 3/4 of it is "useful" info, 6144 bytes in total) > CONFIG_AUDIO_DMA=y > CONFIG_AUDIO_FORMAT_RAW=y > CONFIG_AUDIO_I2S=y > CONFIG_DMA=y > CONFIG_DMA_LINK=y > CONFIG_DRIVERS_AUDIO=y > CONFIG_ESP32_I2S0=y > CONFIG_ESP32_I2S0_BCLKPIN=25 > CONFIG_ESP32_I2S0_DATA_BIT_WIDTH_24BIT=y > CONFIG_ESP32_I2S0_DINPIN=26 > CONFIG_ESP32_I2S0_SAMPLE_RATE=8000 > CONFIG_ESP32_I2S0_WSPIN=27 > CONFIG_ESP32_I2S=y > CONFIG_I2S_DMADESC_NUM=4 > > I tried modifying the number of audio buffers and also making them bigger, > but that did not solve the problem. > Any ideas on what could cause this? > Could it be something related to SDCard storage? Maybe it needs some optimization! Please try using a RAMDISK of 1MB+ and save the file to it. If it works we will know the SDCard could be the limitation of this configuration. BR, Alan
Re: CTU CAN FD driver multi-licence for Nuttx
Hi Brennan, Is this something anyone can do? If so I'll take this step to move forward: it's been unclear how to get this question resolved. Kind regards, Andrew On Fri, Oct 20, 2023, 1:36 AM Brennan Ashton wrote: > There is way to much speculation here (and some jus wrong statements). > Someone just needs to open an Apache JIRA ticket with legal and you will > get an offical answer. > > --Brennan > > On Thu, Oct 19, 2023, 2:54 AM Andrew Dennison < > andrew.denni...@motec.com.au> > wrote: > > > Hi all, > > > > Wow, i didn't think we were doing anything other than trying to help > > facilitate adding more driver support. The easiest approach seems to be > to > > get the os independent components licenced by the original authors in a > > compatible way so we can move forward with the technical element. > > > > My recollection is the license A OR B proposal came from a document on > the > > Apache website we were pointed to on this mailing list a few months ago, > > but maybe I'm mistaken. > > > > Is this really the first time this has been debated? There seemed to be > > examples of this exact model when a had a quick look around. > > > > I just want to find out if there is a way forward compatible with Apache > > requirements: IANAL and don't want to speculate on the way forward, just > > thought it was easier to ask. > > > > Can anyone in the project help facilitate an "official" answer from > Apache? > > > > Kind regards, > > > > Andrew > > > > PS: the driver authors are not subscribed, so probably haven't seen this > > recently debate. I'll coordinate with them if there is a way forward. > > > > On Thu, Oct 19, 2023, 6:49 PM Sebastien Lorquet > > wrote: > > > > > Are you seriously taking legal advice, on behalf of an apache project, > > > from a generative language model? > > > > > > Sebastien > > > > > > > > > Le 17/10/2023 à 22:22, Alan C. Assis a écrit : > > > > Oops, it was: you cannot enforce both at same time. > > > > > > > > Actually I think I was wrong (not about enforcing), but the main > issue > > > > about Dual license is how the contributions will evolve. > > > > > > > > I decided to ask about it to ChatGPT: > > > > > > > > " > > > > Question: if an open-source software X was released as dual license > > > > GPL and Apache License, can we used it in our project NuttX that used > > > > Apache License? > > > > > > > > If an open-source software X is released under both the GPL (GNU > > > > General Public License) and the Apache License, you generally have > > > > some flexibility in how you can use it in your project NuttX, which > is > > > > licensed under the Apache License. However, there are important > > > > considerations and potential complications to keep in mind: > > > > > > > > Compatibility of Licenses: > > > > The Apache License and the GPL are generally considered to > be > > > > compatible licenses. This means that you can include Apache-licensed > > > > code in a GPL-licensed project and vice versa without violating the > > > > terms of either license. > > > > > > > > License Choice: > > > > When incorporating dual-licensed code into your project, you > > > > have a choice in which license to follow. If you choose the Apache > > > > License, you can do so without any issues, as the Apache License is > > > > permissive. However, if you choose the GPL, you must comply with the > > > > terms of the GPL, which may include open-sourcing your entire project > > > > under the GPL. > > > > > > > > Potential GPL Implications: > > > > Using the GPL-licensed version of software X may have > > > > implications for the licensing of your entire project. The GPL is a > > > > more restrictive license that requires you to release your entire > > > > project under the GPL if you use GPL-licensed code. This could affect > > > > how you distribute your project and any proprietary components within > > > > it. > > > > > > > > Be Careful with License Mixing: > > > > It's important to carefully manage the licensing of each > > > > component within your project. Ensure that you clearly identify and > > > > understand the licensing terms of each component and only include > code > > > > in your project that is compatible with the licensing choices you > want > > > > to make. > > > > > > > > Consult Legal Advice: > > > > Dual licensing can be complex, and the specific terms of > > > > software X may have variations or nuances that need legal > > > > interpretation. It's advisable to consult with a legal expert who is > > > > well-versed in open source licensing if you have any doubts or > > > > concerns. > > > > > > > > In summary, you can use the dual-licensed software X in your project > > > > NuttX that is under the Apache License. However, you need to make a > > > > conscious choice about which license to follow for the code from > > > > software X, and be aware of the potential implications, especially if > > > > you dec
Re: Queues
And FIFO rather than deterministic > On 19 Oct 2023, at 20:49, Petro Karashchenko > wrote: > > Hi, > > I do not fully understand if you are looking from Application or Kernel > perspective? > Also I do not know if the CAN driver is capable of providing you with > information when the message is actually transmitted on the bus. I mean > that for example CAN peripheral may have multiple TX buffers and you can > put your message into one of those, but it can loose internal TX > arbitration if CAN peripheral picks a buffer holding the lowest CAN-ID > first, so the mechanism how do you want to ensure that messages are > transmitted with the chronological order is not clear to me, unless you use > a special version of the peripheral driver that uses a single TX buffer. > > Best regards, > Petro > > чт, 19 жовт. 2023 р. о 22:35 Tim Hardisty пише: > >> Hello helpful people. I am not sure if this is a POSIX or NuttX >> question, so apologies it it's something I "should" know. >> >> I am looking for a methodology - ideally portable (POSIX) - perhaps a >> queue, to hold a list of messages (CANbus) that need to be transmitted >> in the correct chronological order. I have been using linked lists for >> other things and just about have that sussed (but they do my head in to >> be honest!) but it doesn't seem quite right for this. I am thinking the >> set of "dq_" functions are possibly a good solution but I can't find >> much information/documentation on this and am not sure if its just a >> NuttX-specific thing, although I see it used heavily for audio playback? >> >> Am I on the right track, or should I be looking at something else? >> >> In essence I want to add (queue?) entries (pointers to message structs) >> that need to be sent (on a POSIX timer, which I have setup and working >> well) and once each is transmitted it'll be removed until added again if >> needed. I want it to be as generic as possible. >> >> Thanks! >> >> TimH (aka TimJTi...new email account) >>
Re: Queues
Application level. Lets assume the CAN driver deals with everything else (Big assumption actually but let’s go with it) > On 19 Oct 2023, at 20:49, Petro Karashchenko > wrote: > > Hi, > > I do not fully understand if you are looking from Application or Kernel > perspective? > Also I do not know if the CAN driver is capable of providing you with > information when the message is actually transmitted on the bus. I mean > that for example CAN peripheral may have multiple TX buffers and you can > put your message into one of those, but it can loose internal TX > arbitration if CAN peripheral picks a buffer holding the lowest CAN-ID > first, so the mechanism how do you want to ensure that messages are > transmitted with the chronological order is not clear to me, unless you use > a special version of the peripheral driver that uses a single TX buffer. > > Best regards, > Petro > > чт, 19 жовт. 2023 р. о 22:35 Tim Hardisty пише: > >> Hello helpful people. I am not sure if this is a POSIX or NuttX >> question, so apologies it it's something I "should" know. >> >> I am looking for a methodology - ideally portable (POSIX) - perhaps a >> queue, to hold a list of messages (CANbus) that need to be transmitted >> in the correct chronological order. I have been using linked lists for >> other things and just about have that sussed (but they do my head in to >> be honest!) but it doesn't seem quite right for this. I am thinking the >> set of "dq_" functions are possibly a good solution but I can't find >> much information/documentation on this and am not sure if its just a >> NuttX-specific thing, although I see it used heavily for audio playback? >> >> Am I on the right track, or should I be looking at something else? >> >> In essence I want to add (queue?) entries (pointers to message structs) >> that need to be sent (on a POSIX timer, which I have setup and working >> well) and once each is transmitted it'll be removed until added again if >> needed. I want it to be as generic as possible. >> >> Thanks! >> >> TimH (aka TimJTi...new email account) >>
Re: Queues
Hi, I do not fully understand if you are looking from Application or Kernel perspective? Also I do not know if the CAN driver is capable of providing you with information when the message is actually transmitted on the bus. I mean that for example CAN peripheral may have multiple TX buffers and you can put your message into one of those, but it can loose internal TX arbitration if CAN peripheral picks a buffer holding the lowest CAN-ID first, so the mechanism how do you want to ensure that messages are transmitted with the chronological order is not clear to me, unless you use a special version of the peripheral driver that uses a single TX buffer. Best regards, Petro чт, 19 жовт. 2023 р. о 22:35 Tim Hardisty пише: > Hello helpful people. I am not sure if this is a POSIX or NuttX > question, so apologies it it's something I "should" know. > > I am looking for a methodology - ideally portable (POSIX) - perhaps a > queue, to hold a list of messages (CANbus) that need to be transmitted > in the correct chronological order. I have been using linked lists for > other things and just about have that sussed (but they do my head in to > be honest!) but it doesn't seem quite right for this. I am thinking the > set of "dq_" functions are possibly a good solution but I can't find > much information/documentation on this and am not sure if its just a > NuttX-specific thing, although I see it used heavily for audio playback? > > Am I on the right track, or should I be looking at something else? > > In essence I want to add (queue?) entries (pointers to message structs) > that need to be sent (on a POSIX timer, which I have setup and working > well) and once each is transmitted it'll be removed until added again if > needed. I want it to be as generic as possible. > > Thanks! > > TimH (aka TimJTi...new email account) >
Queues
Hello helpful people. I am not sure if this is a POSIX or NuttX question, so apologies it it's something I "should" know. I am looking for a methodology - ideally portable (POSIX) - perhaps a queue, to hold a list of messages (CANbus) that need to be transmitted in the correct chronological order. I have been using linked lists for other things and just about have that sussed (but they do my head in to be honest!) but it doesn't seem quite right for this. I am thinking the set of "dq_" functions are possibly a good solution but I can't find much information/documentation on this and am not sure if its just a NuttX-specific thing, although I see it used heavily for audio playback? Am I on the right track, or should I be looking at something else? In essence I want to add (queue?) entries (pointers to message structs) that need to be sent (on a POSIX timer, which I have setup and working well) and once each is transmitted it'll be removed until added again if needed. I want it to be as generic as possible. Thanks! TimH (aka TimJTi...new email account)
Re: [VOTE] Apache NuttX 12.3.0 RC1 release
+1 :-) BUILD HOST: FreeBSD octagon 13.2-RELEASE-p4 FreeBSD 13.2-RELEASE-p4 GENERIC amd64 . TARGETS: 1. ESP32. 2. ESP32-C3. 3. ESP32-S2. 4. ESP32-S3. === ESP32 === % xtensa-esp32-elf-gcc -v Using built-in specs. COLLECT_GCC=xtensa-esp32-elf-gcc COLLECT_LTO_WRAPPER=/usr/home/cederom/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32-elf/bin/../libexec/gcc/xtensa-esp32-elf/8.4.0/lto-wrapper Target: xtensa-esp32-elf Configured with: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=xtensa-esp32-elf --prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf --exec_prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf --with-local-prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf/xtensa-esp32-elf --with-headers=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf/xtensa-esp32-elf/include --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG esp-2021r2-patch5' --disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections --disable-libgomp --disable-libmudflap --disable-libmpx --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libstdcxx-verbose --with-gmp=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-mpfr=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-mpc=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --with-isl=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools --enable-lto --enable-target-optspace --without-long-double-128 --disable-nls --enable-multiarch --enable-languages=c,c++ --disable-libstdcxx-verbose --enable-threads=posix --enable-gcov-custom-rtio --enable-libstdcxx-time=yes Thread model: posix gcc version 8.4.0 (crosstool-NG esp-2021r2-patch5) % /usr/bin/time -h ./tools/configure.sh -B -a ../nuttx-apps.git esp32-devkitc:coremark 2,88s real 1,49s user 1,61s sys % /usr/bin/time -h gmake -j8 14,84s real 56,33s user 32,84s sys % /usr/bin/time -h gmake flash 9,98s real 1,49s user 0,97s sys % cu -l /dev/cuaU0 -s 115200 can't open log file /var/log/aculog. Connected ts Jul 29 2019 12:21:46 rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:4540 ho 0 tail 12 room 4 load:0x40078000,len:12344 ho 0 tail 12 room 4 load:0x40080400,len:4124 entry 0x40080680 Running CoreMark... 2K performance run parameters for coremark. CoreMark Size: 666 Total ticks : 1218 Total time (secs): 12.18 Iterations/Sec : 985.221675 Iterations : 12000 Compiler version : GCC8.4.0 Compiler flags : -O3 -fno-strict-aliasing -fomit-frame-pointer -ffunction-sections -fdata-sections Parallel PThreads : 2 Memory location : HEAP seedcrc : 0xe9f5 [0]crclist : 0xe714 [1]crclist : 0xe714 [0]crcmatrix : 0x1fd7 [1]crcmatrix : 0x1fd7 [0]crcstate : 0x8e3a [1]crcstate : 0x8e3a [0]crcfinal : 0xa14c [1]crcfinal : 0xa14c Correct operation validated. See README.md for run and reporting rules. CoreMark 1.0 : 985.221675 / GCC8.4.0 -O3 -fno-strict-aliasing -fomit-frame-pointer -ffunction-sections -fdata-sections / HEAP / 2:PThreads ~ [EOT] % /usr/bin/time -h gmake clean distclean 6,92s real 3,12s user 4,08s sys % /usr/bin/time -h ./tools/configure.sh -B -a ../nuttx-apps.git esp32-devkitc:nsh 2,88s real 1,51s user 1,59s sys % /usr/bin/time -h gmake -j8 15,25s real 54,93s user 34,13s sys % /usr/bin/time -h gmake flash LD: nuttx CP: nuttx.hex MKIMAGE: ESP32 binary esptool.py -c esp32 elf2image -fs 4MB -fm dio -ff 40m -o nuttx.bin nuttx esptool.py v4.5 Creating esp32 image... Merged 1 ELF section Successfully created esp32 image. Generated: nuttx.bin (ESP32 compatible) esptool.py -c esp32 -p /dev/cuaU0 -b 115200 write_flash -fs detect -fm dio -ff 40m 0x1 nuttx.bin esptool.py v4.5 Serial port /dev/cuaU0 Connecting. Chip is ESP32-D0WD-V3 (revision v3.0) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz MAC: 8c:4b:14:81:0b:ec Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 4MB Flash will be erased from 0x0001 to 0x00031fff... Compressed 136080 bytes to 62605... Wrote 136080 bytes (62605 compressed) at 0x0001 in 5.7 seconds (effective 191.4 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... 11,09s real 1,82s user 1,24s sys % cu -l /dev/cuaU0 -s 115200 Connected rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2
ESP32 I2S audio recording is incomplete
Hello, I am trying to record audio using a MEMS microphone, but the final recording is missing parts periodically (for example, with a sample rate of 8kHz, there are parts ~1s long missing once every ~10-11s. Using a sample rate of 48kHz, the period is ~1s long). This is my first time working with I2S and I can't figure out what causes this behaviour. My setup is as follows: - the microphone has 24-bit depth in a 32-bit word (MSB first) when transmitting data - i am using nxrecorder to record the pcm audio onto an SD card (device pcm_in0) - to listen to the recording i import the file into Audacity (24-bit, Big Endian) Defconfig regarding audio: CONFIG_AUDIO=y CONFIG_AUDIO_BUFFER_NUMBYTES=6144 (from the i2s buffer which is 8192 bytes, 3/4 of it is "useful" info, 6144 bytes in total) CONFIG_AUDIO_DMA=y CONFIG_AUDIO_FORMAT_RAW=y CONFIG_AUDIO_I2S=y CONFIG_DMA=y CONFIG_DMA_LINK=y CONFIG_DRIVERS_AUDIO=y CONFIG_ESP32_I2S0=y CONFIG_ESP32_I2S0_BCLKPIN=25 CONFIG_ESP32_I2S0_DATA_BIT_WIDTH_24BIT=y CONFIG_ESP32_I2S0_DINPIN=26 CONFIG_ESP32_I2S0_SAMPLE_RATE=8000 CONFIG_ESP32_I2S0_WSPIN=27 CONFIG_ESP32_I2S=y CONFIG_I2S_DMADESC_NUM=4 I tried modifying the number of audio buffers and also making them bigger, but that did not solve the problem. Any ideas on what could cause this? Regards, Simona
Re: CTU CAN FD driver multi-licence for Nuttx
Hi Alan, Sure, I understand the motivation. Still, as entertaining as it might be, let's not forget (and not just on this point) that language models are generally unreliable. So I would tend to be cautious before calling language model output a "point of view". Whatever, this is not the most important aspect of the discussion. Best regards, Sebastien Le 19/10/2023 à 17:14, Alan C. Assis a écrit : Hi Sebastien, I think you missed the point: we are not asking legal advice for an AI, we are just trying to find other point of view that it could have found "chewing" millions of thread about license issues. BR, Alan On 10/19/23, Sebastien Lorquet wrote: Are you seriously taking legal advice, on behalf of an apache project, from a generative language model? Sebastien Le 17/10/2023 à 22:22, Alan C. Assis a écrit : Oops, it was: you cannot enforce both at same time. Actually I think I was wrong (not about enforcing), but the main issue about Dual license is how the contributions will evolve. I decided to ask about it to ChatGPT: " Question: if an open-source software X was released as dual license GPL and Apache License, can we used it in our project NuttX that used Apache License? If an open-source software X is released under both the GPL (GNU General Public License) and the Apache License, you generally have some flexibility in how you can use it in your project NuttX, which is licensed under the Apache License. However, there are important considerations and potential complications to keep in mind: Compatibility of Licenses: The Apache License and the GPL are generally considered to be compatible licenses. This means that you can include Apache-licensed code in a GPL-licensed project and vice versa without violating the terms of either license. License Choice: When incorporating dual-licensed code into your project, you have a choice in which license to follow. If you choose the Apache License, you can do so without any issues, as the Apache License is permissive. However, if you choose the GPL, you must comply with the terms of the GPL, which may include open-sourcing your entire project under the GPL. Potential GPL Implications: Using the GPL-licensed version of software X may have implications for the licensing of your entire project. The GPL is a more restrictive license that requires you to release your entire project under the GPL if you use GPL-licensed code. This could affect how you distribute your project and any proprietary components within it. Be Careful with License Mixing: It's important to carefully manage the licensing of each component within your project. Ensure that you clearly identify and understand the licensing terms of each component and only include code in your project that is compatible with the licensing choices you want to make. Consult Legal Advice: Dual licensing can be complex, and the specific terms of software X may have variations or nuances that need legal interpretation. It's advisable to consult with a legal expert who is well-versed in open source licensing if you have any doubts or concerns. In summary, you can use the dual-licensed software X in your project NuttX that is under the Apache License. However, you need to make a conscious choice about which license to follow for the code from software X, and be aware of the potential implications, especially if you decide to use the GPL-licensed version, as it may affect the licensing of your entire project. Consulting with a legal expert is a wise step when dealing with complex licensing issues. " So, we are back to square one! BR, Alan On 10/17/23, Alan C. Assis wrote: Hi Tomek, On 10/17/23, Tomek CEDRO wrote: To be honest I don't see a big issue of a driver as dual license, we already have SocketCAN and other drivers as dual license (GPL and Apache, BSD and Apache, etc). The original Author said the want is to be released as dual license: A or license B. Isn't is more A AND B ? A OR B == I want A but not B so I stick to A ? :-P No, because technically you can enforce two at same time, in that case GPL could prevail! :-) The License war is terrible, I think there is not a single license compatible with all, even CC0, BSD or public domain cannot be used as freely was we think. Many countries law, companies, patents, etc, involved. BSD and MIT seems most liberal. Apache also clarifies patent stuff. GPL is viral and enforces GPL on all further works. As above, if the case is "A AND B" then GPL taints everything to be GPL too..? See, the Author defines it as dual license (so yes A "AND" B), but if project X uses license A it will stick to license A instead of B. If project Y uses license B it will stick with B instead of A. So, more precisely it is A XOR B. Quck search (query: gpl vs apache vs bsd license) resulting quote : " I will mainly talk about the practical consequences and not go into
Re: CTU CAN FD driver multi-licence for Nuttx
Hi Sebastien, I think you missed the point: we are not asking legal advice for an AI, we are just trying to find other point of view that it could have found "chewing" millions of thread about license issues. BR, Alan On 10/19/23, Sebastien Lorquet wrote: > Are you seriously taking legal advice, on behalf of an apache project, > from a generative language model? > > Sebastien > > > Le 17/10/2023 à 22:22, Alan C. Assis a écrit : >> Oops, it was: you cannot enforce both at same time. >> >> Actually I think I was wrong (not about enforcing), but the main issue >> about Dual license is how the contributions will evolve. >> >> I decided to ask about it to ChatGPT: >> >> " >> Question: if an open-source software X was released as dual license >> GPL and Apache License, can we used it in our project NuttX that used >> Apache License? >> >> If an open-source software X is released under both the GPL (GNU >> General Public License) and the Apache License, you generally have >> some flexibility in how you can use it in your project NuttX, which is >> licensed under the Apache License. However, there are important >> considerations and potential complications to keep in mind: >> >> Compatibility of Licenses: >> The Apache License and the GPL are generally considered to be >> compatible licenses. This means that you can include Apache-licensed >> code in a GPL-licensed project and vice versa without violating the >> terms of either license. >> >> License Choice: >> When incorporating dual-licensed code into your project, you >> have a choice in which license to follow. If you choose the Apache >> License, you can do so without any issues, as the Apache License is >> permissive. However, if you choose the GPL, you must comply with the >> terms of the GPL, which may include open-sourcing your entire project >> under the GPL. >> >> Potential GPL Implications: >> Using the GPL-licensed version of software X may have >> implications for the licensing of your entire project. The GPL is a >> more restrictive license that requires you to release your entire >> project under the GPL if you use GPL-licensed code. This could affect >> how you distribute your project and any proprietary components within >> it. >> >> Be Careful with License Mixing: >> It's important to carefully manage the licensing of each >> component within your project. Ensure that you clearly identify and >> understand the licensing terms of each component and only include code >> in your project that is compatible with the licensing choices you want >> to make. >> >> Consult Legal Advice: >> Dual licensing can be complex, and the specific terms of >> software X may have variations or nuances that need legal >> interpretation. It's advisable to consult with a legal expert who is >> well-versed in open source licensing if you have any doubts or >> concerns. >> >> In summary, you can use the dual-licensed software X in your project >> NuttX that is under the Apache License. However, you need to make a >> conscious choice about which license to follow for the code from >> software X, and be aware of the potential implications, especially if >> you decide to use the GPL-licensed version, as it may affect the >> licensing of your entire project. Consulting with a legal expert is a >> wise step when dealing with complex licensing issues. >> " >> >> So, we are back to square one! >> >> BR, >> >> Alan >> >> On 10/17/23, Alan C. Assis wrote: >>> Hi Tomek, >>> >>> On 10/17/23, Tomek CEDRO wrote: > To be honest I don't see a big issue of a driver as dual license, we > already have SocketCAN and other drivers as dual license (GPL and > Apache, BSD and Apache, etc). The original Author said the want is to > be released as dual license: A or license B. Isn't is more A AND B ? A OR B == I want A but not B so I stick to A ? :-P >>> No, because technically you can enforce two at same time, in that case >>> GPL could prevail! :-) >>> > The License war is terrible, I think there is not a single license > compatible with all, even CC0, BSD or public domain cannot be used as > freely was we think. Many countries law, companies, patents, etc, > involved. BSD and MIT seems most liberal. Apache also clarifies patent stuff. GPL is viral and enforces GPL on all further works. As above, if the case is "A AND B" then GPL taints everything to be GPL too..? >>> See, the Author defines it as dual license (so yes A "AND" B), but if >>> project X uses license A it will stick to license A instead of B. If >>> project Y uses license B it will stick with B instead of A. >>> >>> So, more precisely it is A XOR B. >>> Quck search (query: gpl vs apache vs bsd license) resulting quote : " I will mainly talk about the practical consequences and not go into the nitty gritty. By GPL compatible I mean that a GPL project c
Re: CTU CAN FD driver multi-licence for Nuttx
There is way to much speculation here (and some jus wrong statements). Someone just needs to open an Apache JIRA ticket with legal and you will get an offical answer. --Brennan On Thu, Oct 19, 2023, 2:54 AM Andrew Dennison wrote: > Hi all, > > Wow, i didn't think we were doing anything other than trying to help > facilitate adding more driver support. The easiest approach seems to be to > get the os independent components licenced by the original authors in a > compatible way so we can move forward with the technical element. > > My recollection is the license A OR B proposal came from a document on the > Apache website we were pointed to on this mailing list a few months ago, > but maybe I'm mistaken. > > Is this really the first time this has been debated? There seemed to be > examples of this exact model when a had a quick look around. > > I just want to find out if there is a way forward compatible with Apache > requirements: IANAL and don't want to speculate on the way forward, just > thought it was easier to ask. > > Can anyone in the project help facilitate an "official" answer from Apache? > > Kind regards, > > Andrew > > PS: the driver authors are not subscribed, so probably haven't seen this > recently debate. I'll coordinate with them if there is a way forward. > > On Thu, Oct 19, 2023, 6:49 PM Sebastien Lorquet > wrote: > > > Are you seriously taking legal advice, on behalf of an apache project, > > from a generative language model? > > > > Sebastien > > > > > > Le 17/10/2023 à 22:22, Alan C. Assis a écrit : > > > Oops, it was: you cannot enforce both at same time. > > > > > > Actually I think I was wrong (not about enforcing), but the main issue > > > about Dual license is how the contributions will evolve. > > > > > > I decided to ask about it to ChatGPT: > > > > > > " > > > Question: if an open-source software X was released as dual license > > > GPL and Apache License, can we used it in our project NuttX that used > > > Apache License? > > > > > > If an open-source software X is released under both the GPL (GNU > > > General Public License) and the Apache License, you generally have > > > some flexibility in how you can use it in your project NuttX, which is > > > licensed under the Apache License. However, there are important > > > considerations and potential complications to keep in mind: > > > > > > Compatibility of Licenses: > > > The Apache License and the GPL are generally considered to be > > > compatible licenses. This means that you can include Apache-licensed > > > code in a GPL-licensed project and vice versa without violating the > > > terms of either license. > > > > > > License Choice: > > > When incorporating dual-licensed code into your project, you > > > have a choice in which license to follow. If you choose the Apache > > > License, you can do so without any issues, as the Apache License is > > > permissive. However, if you choose the GPL, you must comply with the > > > terms of the GPL, which may include open-sourcing your entire project > > > under the GPL. > > > > > > Potential GPL Implications: > > > Using the GPL-licensed version of software X may have > > > implications for the licensing of your entire project. The GPL is a > > > more restrictive license that requires you to release your entire > > > project under the GPL if you use GPL-licensed code. This could affect > > > how you distribute your project and any proprietary components within > > > it. > > > > > > Be Careful with License Mixing: > > > It's important to carefully manage the licensing of each > > > component within your project. Ensure that you clearly identify and > > > understand the licensing terms of each component and only include code > > > in your project that is compatible with the licensing choices you want > > > to make. > > > > > > Consult Legal Advice: > > > Dual licensing can be complex, and the specific terms of > > > software X may have variations or nuances that need legal > > > interpretation. It's advisable to consult with a legal expert who is > > > well-versed in open source licensing if you have any doubts or > > > concerns. > > > > > > In summary, you can use the dual-licensed software X in your project > > > NuttX that is under the Apache License. However, you need to make a > > > conscious choice about which license to follow for the code from > > > software X, and be aware of the potential implications, especially if > > > you decide to use the GPL-licensed version, as it may affect the > > > licensing of your entire project. Consulting with a legal expert is a > > > wise step when dealing with complex licensing issues. > > > " > > > > > > So, we are back to square one! > > > > > > BR, > > > > > > Alan > > > > > > On 10/17/23, Alan C. Assis wrote: > > >> Hi Tomek, > > >> > > >> On 10/17/23, Tomek CEDRO wrote: > > To be honest I don't see a big issue of a driver as dual license, we > >
Re: CTU CAN FD driver multi-licence for Nuttx
Hi all, I am not a lawyer and understand the multi license code and it is not easy. Here are my thoughts: 1. The GPL v2 license is incompatible with Apache v2 license https://www.apache.org/licenses/GPL-compatibility.html 2. Software contamination https://www.mend.io/wp-content/media/2021/04/a-survival-guide-to-using-gpl.pdf in a monolithic build I interpret the contamination as mandatory release of all code (as copyleft), that has been incorporated in the contaminated item (in our case the NuttX image). Please comment if you feel otherwise I think that the GPL code isolation is not a good approach because the developer that enables that code should know license implications and take full responsibility of the implications of enabling GPL code in their local build In my opinion 1. License what can be re licensed as a pure Apache code 2. The GPL code should stay in a separate git (like will all planned from the beginning) and not even be downloaded together with NuttX and apps Best regards Alin On Thu, Oct 19, 2023 at 11:55 AM Andrew Dennison < andrew.denni...@motec.com.au> wrote: > Hi all, > > Wow, i didn't think we were doing anything other than trying to help > facilitate adding more driver support. The easiest approach seems to be to > get the os independent components licenced by the original authors in a > compatible way so we can move forward with the technical element. > > My recollection is the license A OR B proposal came from a document on the > Apache website we were pointed to on this mailing list a few months ago, > but maybe I'm mistaken. > > Is this really the first time this has been debated? There seemed to be > examples of this exact model when a had a quick look around. > > I just want to find out if there is a way forward compatible with Apache > requirements: IANAL and don't want to speculate on the way forward, just > thought it was easier to ask. > > Can anyone in the project help facilitate an "official" answer from Apache? > > Kind regards, > > Andrew > > PS: the driver authors are not subscribed, so probably haven't seen this > recently debate. I'll coordinate with them if there is a way forward. > > On Thu, Oct 19, 2023, 6:49 PM Sebastien Lorquet > wrote: > > > Are you seriously taking legal advice, on behalf of an apache project, > > from a generative language model? > > > > Sebastien > > > > > > Le 17/10/2023 à 22:22, Alan C. Assis a écrit : > > > Oops, it was: you cannot enforce both at same time. > > > > > > Actually I think I was wrong (not about enforcing), but the main issue > > > about Dual license is how the contributions will evolve. > > > > > > I decided to ask about it to ChatGPT: > > > > > > " > > > Question: if an open-source software X was released as dual license > > > GPL and Apache License, can we used it in our project NuttX that used > > > Apache License? > > > > > > If an open-source software X is released under both the GPL (GNU > > > General Public License) and the Apache License, you generally have > > > some flexibility in how you can use it in your project NuttX, which is > > > licensed under the Apache License. However, there are important > > > considerations and potential complications to keep in mind: > > > > > > Compatibility of Licenses: > > > The Apache License and the GPL are generally considered to be > > > compatible licenses. This means that you can include Apache-licensed > > > code in a GPL-licensed project and vice versa without violating the > > > terms of either license. > > > > > > License Choice: > > > When incorporating dual-licensed code into your project, you > > > have a choice in which license to follow. If you choose the Apache > > > License, you can do so without any issues, as the Apache License is > > > permissive. However, if you choose the GPL, you must comply with the > > > terms of the GPL, which may include open-sourcing your entire project > > > under the GPL. > > > > > > Potential GPL Implications: > > > Using the GPL-licensed version of software X may have > > > implications for the licensing of your entire project. The GPL is a > > > more restrictive license that requires you to release your entire > > > project under the GPL if you use GPL-licensed code. This could affect > > > how you distribute your project and any proprietary components within > > > it. > > > > > > Be Careful with License Mixing: > > > It's important to carefully manage the licensing of each > > > component within your project. Ensure that you clearly identify and > > > understand the licensing terms of each component and only include code > > > in your project that is compatible with the licensing choices you want > > > to make. > > > > > > Consult Legal Advice: > > > Dual licensing can be complex, and the specific terms of > > > software X may have variations or nuances that need legal > > > interpretation. It's advisable to consult with a lega
Re: CTU CAN FD driver multi-licence for Nuttx
Hi all, Wow, i didn't think we were doing anything other than trying to help facilitate adding more driver support. The easiest approach seems to be to get the os independent components licenced by the original authors in a compatible way so we can move forward with the technical element. My recollection is the license A OR B proposal came from a document on the Apache website we were pointed to on this mailing list a few months ago, but maybe I'm mistaken. Is this really the first time this has been debated? There seemed to be examples of this exact model when a had a quick look around. I just want to find out if there is a way forward compatible with Apache requirements: IANAL and don't want to speculate on the way forward, just thought it was easier to ask. Can anyone in the project help facilitate an "official" answer from Apache? Kind regards, Andrew PS: the driver authors are not subscribed, so probably haven't seen this recently debate. I'll coordinate with them if there is a way forward. On Thu, Oct 19, 2023, 6:49 PM Sebastien Lorquet wrote: > Are you seriously taking legal advice, on behalf of an apache project, > from a generative language model? > > Sebastien > > > Le 17/10/2023 à 22:22, Alan C. Assis a écrit : > > Oops, it was: you cannot enforce both at same time. > > > > Actually I think I was wrong (not about enforcing), but the main issue > > about Dual license is how the contributions will evolve. > > > > I decided to ask about it to ChatGPT: > > > > " > > Question: if an open-source software X was released as dual license > > GPL and Apache License, can we used it in our project NuttX that used > > Apache License? > > > > If an open-source software X is released under both the GPL (GNU > > General Public License) and the Apache License, you generally have > > some flexibility in how you can use it in your project NuttX, which is > > licensed under the Apache License. However, there are important > > considerations and potential complications to keep in mind: > > > > Compatibility of Licenses: > > The Apache License and the GPL are generally considered to be > > compatible licenses. This means that you can include Apache-licensed > > code in a GPL-licensed project and vice versa without violating the > > terms of either license. > > > > License Choice: > > When incorporating dual-licensed code into your project, you > > have a choice in which license to follow. If you choose the Apache > > License, you can do so without any issues, as the Apache License is > > permissive. However, if you choose the GPL, you must comply with the > > terms of the GPL, which may include open-sourcing your entire project > > under the GPL. > > > > Potential GPL Implications: > > Using the GPL-licensed version of software X may have > > implications for the licensing of your entire project. The GPL is a > > more restrictive license that requires you to release your entire > > project under the GPL if you use GPL-licensed code. This could affect > > how you distribute your project and any proprietary components within > > it. > > > > Be Careful with License Mixing: > > It's important to carefully manage the licensing of each > > component within your project. Ensure that you clearly identify and > > understand the licensing terms of each component and only include code > > in your project that is compatible with the licensing choices you want > > to make. > > > > Consult Legal Advice: > > Dual licensing can be complex, and the specific terms of > > software X may have variations or nuances that need legal > > interpretation. It's advisable to consult with a legal expert who is > > well-versed in open source licensing if you have any doubts or > > concerns. > > > > In summary, you can use the dual-licensed software X in your project > > NuttX that is under the Apache License. However, you need to make a > > conscious choice about which license to follow for the code from > > software X, and be aware of the potential implications, especially if > > you decide to use the GPL-licensed version, as it may affect the > > licensing of your entire project. Consulting with a legal expert is a > > wise step when dealing with complex licensing issues. > > " > > > > So, we are back to square one! > > > > BR, > > > > Alan > > > > On 10/17/23, Alan C. Assis wrote: > >> Hi Tomek, > >> > >> On 10/17/23, Tomek CEDRO wrote: > To be honest I don't see a big issue of a driver as dual license, we > already have SocketCAN and other drivers as dual license (GPL and > Apache, BSD and Apache, etc). The original Author said the want is to > be released as dual license: A or license B. > >>> Isn't is more A AND B ? > >>> > >>> A OR B == I want A but not B so I stick to A ? :-P > >>> > >> No, because technically you can enforce two at same time, in that case > >> GPL could prevail! :-) > >> > The License war is terrible, I think there
Re: CTU CAN FD driver multi-licence for Nuttx
Are you seriously taking legal advice, on behalf of an apache project, from a generative language model? Sebastien Le 17/10/2023 à 22:22, Alan C. Assis a écrit : Oops, it was: you cannot enforce both at same time. Actually I think I was wrong (not about enforcing), but the main issue about Dual license is how the contributions will evolve. I decided to ask about it to ChatGPT: " Question: if an open-source software X was released as dual license GPL and Apache License, can we used it in our project NuttX that used Apache License? If an open-source software X is released under both the GPL (GNU General Public License) and the Apache License, you generally have some flexibility in how you can use it in your project NuttX, which is licensed under the Apache License. However, there are important considerations and potential complications to keep in mind: Compatibility of Licenses: The Apache License and the GPL are generally considered to be compatible licenses. This means that you can include Apache-licensed code in a GPL-licensed project and vice versa without violating the terms of either license. License Choice: When incorporating dual-licensed code into your project, you have a choice in which license to follow. If you choose the Apache License, you can do so without any issues, as the Apache License is permissive. However, if you choose the GPL, you must comply with the terms of the GPL, which may include open-sourcing your entire project under the GPL. Potential GPL Implications: Using the GPL-licensed version of software X may have implications for the licensing of your entire project. The GPL is a more restrictive license that requires you to release your entire project under the GPL if you use GPL-licensed code. This could affect how you distribute your project and any proprietary components within it. Be Careful with License Mixing: It's important to carefully manage the licensing of each component within your project. Ensure that you clearly identify and understand the licensing terms of each component and only include code in your project that is compatible with the licensing choices you want to make. Consult Legal Advice: Dual licensing can be complex, and the specific terms of software X may have variations or nuances that need legal interpretation. It's advisable to consult with a legal expert who is well-versed in open source licensing if you have any doubts or concerns. In summary, you can use the dual-licensed software X in your project NuttX that is under the Apache License. However, you need to make a conscious choice about which license to follow for the code from software X, and be aware of the potential implications, especially if you decide to use the GPL-licensed version, as it may affect the licensing of your entire project. Consulting with a legal expert is a wise step when dealing with complex licensing issues. " So, we are back to square one! BR, Alan On 10/17/23, Alan C. Assis wrote: Hi Tomek, On 10/17/23, Tomek CEDRO wrote: To be honest I don't see a big issue of a driver as dual license, we already have SocketCAN and other drivers as dual license (GPL and Apache, BSD and Apache, etc). The original Author said the want is to be released as dual license: A or license B. Isn't is more A AND B ? A OR B == I want A but not B so I stick to A ? :-P No, because technically you can enforce two at same time, in that case GPL could prevail! :-) The License war is terrible, I think there is not a single license compatible with all, even CC0, BSD or public domain cannot be used as freely was we think. Many countries law, companies, patents, etc, involved. BSD and MIT seems most liberal. Apache also clarifies patent stuff. GPL is viral and enforces GPL on all further works. As above, if the case is "A AND B" then GPL taints everything to be GPL too..? See, the Author defines it as dual license (so yes A "AND" B), but if project X uses license A it will stick to license A instead of B. If project Y uses license B it will stick with B instead of A. So, more precisely it is A XOR B. Quck search (query: gpl vs apache vs bsd license) resulting quote : " I will mainly talk about the practical consequences and not go into the nitty gritty. By GPL compatible I mean that a GPL project can use your code (NOT you can use GPL code). The MIT and BSD 2 clause licenses have similar requirements: keep the license file. The BSD 3 clause license adds a term to the BSD 2 that prevents someone from claiming false endorsement. These three licenses are compatible with GPLv2 and v3. The Apache 2.0 license requires you to keep the license file, the NOTICE file if there is one, and show notice for modified files. It also addresses some patent-related issues, so companies use it a lot. It is compatible with GPLv3 but not v2 (due to the patent clauses). There is also an old BSD license that has an clause rel