armbian / build

Armbian Linux build framework generates custom Debian or Ubuntu image for x86, aarch64, riscv64 & armhf
https://www.armbian.com
GNU General Public License v2.0
3.99k stars 2.24k forks source link

Support for SIMCom SIM7070G-based modems please #2156

Closed Wookbert closed 4 years ago

Wookbert commented 4 years ago

I would love to see support for modems based on the SIM7070G chip. Along with Quectel’s BG96, SIMCom’s 70x0 and 7x00 families seem to be the leading choice when it comes to IoT-related applications with LTE-M and NB-IoT.

Shenzhen-based AND Technology manufactures and offers two very affordable modems (< USD 25) using the SIM7070G:

Sidenote: Waveshare has a Raspberry Pi HAT based on the very same chip –> SIM7070G Cat-M/NB-IoT/GPRS HAT SIMCom as chip provider offers excellent documentation on their website. I've attached all files as ZIP archive below:

image SIM7070G Modem - Technical Documentation.zip

image image

lanefu commented 4 years ago

Hi @Wookbert this is something the community would have to do. Core armbian team doesn't have the bandwidth to work on that.

I looked at their instructions, and for Linux their documentation is to apply a hack directly to the usb serial driver. That wouldn't be acceptable for armbian to do.

You could easily build a kernel and patch using the Armbian Build Tools

closing

Wookbert commented 4 years ago

something the community would have to do

Do I get you right in that the community could implement this into the „factory default“ kernel (which is basically what my request is about), as a commit? If so, where to ask the community. At https://forum.armbian.com/ (Home > Community forums > Feature Requests)?

lanefu commented 4 years ago

If someone provides a PR that implements in an appropriate way, then yes it could be added...

You post there if you want, but as with most open-source projects you'll probably need to add this feature yourself.

martinl commented 4 years ago

@Wookbert there is Linux Application Note in the documents, have you checked that

martinl commented 4 years ago

4.2 Add VID and PID Find and modify source code file option.c in kernel. (Usually, it is located in the path: drivers/usb/serial/option.c) If kernel version is V3.2 or newer

define SIMCOM_SIM7080_VID

0x1E0E /If you want to use VID=0x1E0E, and PID=0x9205./

define SIMCOM_SIM7080_PID

0x9205 /If you want to use VID=0x1E0E, and PID=0x9206./

define SIMCOM_SIM7080_PID

0x9206 static const struct option_blacklist_info simcom_SIM7080_blacklist = { }; Add into option_ids list ...... { USB_DEVICE(SIMCOM_SIM7080_VID, SIMCOM_SIM7080_PID), .driver_info = (kernel_ulong_t)& simcom_SIM7080_blacklist t }, ...... If kernel version is below V3.2

define SIMCOM_SIM7080_VID

0x1E0E / If you want to use VID=0x1E0E, and PID=0x9205./

define SIMCOM_SIM7080_PID

/If you want to use VID=0x1E0E, and PID=0x9206./

define SIMCOM_SIM7080_PID

0x9206 Add into option_ids list static const struct usb_device_id option_ids[] = { { USB_DEVICE(SIMCOM_SIM7080_VID, SIMCOM_SIM7080_PID) }, }; static int option_probe(struct usb_serial serial, const struct usb_device_id id) { ...... if (serial->dev->descriptor.idVendor == SIMCOM_SIM7080_VID && serial->dev->descriptor.idProduct == SIMCOM_SIM7080_PID) return -ENODEV; ...... }

martinl commented 4 years ago

I think it could be merged to armbian if you create a patch, confirm that it's working with your hw and then create PR for the patch

Wookbert commented 4 years ago

@martinl

I think the problem is what @lanefu wrote:

I looked at their instructions, and for Linux their documentation is to apply a hack directly to the usb serial driver. That wouldn't be acceptable for armbian to do.

So your cited code from SIMCom’s Linux Application Notes seems to be a nasty hack (I have ZERO knowledge to judge that).

The question is: How would a proper USB implementation look like?

martinl commented 4 years ago

that looks like a normal way of adding USB VID and PID to serial usb driver

Wookbert commented 4 years ago

Does it? So what about @lanefu ’s concerns then?

lanefu commented 4 years ago

Does it? So what about @lanefu ’s concerns then?

there's plenty of people that know more than me :)

Wookbert commented 4 years ago

So what's the way then to get this into the ”factory default build“ of Armbian? As soon as I have the USB modem in my hands, I follow the instruction according to SIMCom’s Linux Application Notes, build/compile a new Kernel, and assuming it works, then what!?

Do x number of people need to confirm that the setup works? How does one commit?

igorpecovnik commented 4 years ago

This project you are about to start is not an issue. Which is why we closed it. Make your self comfortable on forum https://forum.armbian.com/ -> make friends - you need them, study the documentation how to use our tool https://docs.armbian.com/Developer-Guide_Build-Preparation/ and when you are comfortable enough that someone will look into your contribution and accept it, make a pull request https://docs.armbian.com/Process_Contribute/

We have no resources whatsoever to deal with this on a hardware level. Sorry, Armbian is way way too small.