npat-efault / picocom Goto Github PK
View Code? Open in Web Editor NEWMinimal dumb-terminal emulation program
License: GNU General Public License v2.0
Minimal dumb-terminal emulation program
License: GNU General Public License v2.0
What steps will reproduce the problem?
1.Hi All,
Please help me in the below issue.
I had built the picocom for beagle board rev-c3 running android.
I had copied the picocom exe to the board & tried to execute.
#CROSS-COMPILE=arm-eabi LDFLAGS=-static make
Above command had build the picocom successfully.
I had tried following commands on the board.
All are giving same error- "./picocom :1:Syntax Error: "<" unexpected"
#./picocom
#./picocom /dev/ttyUSB0
#./picocom -b 4800 /dev/ttyUSB0
2.
3.
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 20 May 2011 at 11:48
Picocom uses a fixed-size serial port output buffer, the size of which is defined as TTY_Q_SZ in the makefile (32KB default for 2.1). This buffer should be made dynamically grow-able. malloc it at a reaonable initial size (say, 4KB) and double it (realloc) every time it fills-up. The TTY_Q_SZ macro (possibly renamed to TTY_Q_MAXSZ) should then be the maximum size the input buffer is allowed to grow (perhaps with 0 meaning unlimited).
select(2) executes in linear time (O(n)) to its first argument. Since we know
for sure that tty_fd is going to be the maximum fd we need to check, pass that
rather than FD_SETSIZE so we only need to scan over the first few file
descriptors rather than all 1024 (or however many FD_SETSIZE is defined to).
Original issue reported on code.google.com by [email protected]
on 12 Oct 2011 at 9:56
Attachments:
Basically if the stty -a
reports -echo
, do I need to first run stty echo
before picocom --echo
will work? Or does picocom
take care of setting the tty flags?
Also this question applies to the parity mode too.
The help text prints --<f>low s (=soft) | h (=hard) | n (=none)
but in fact x
is the correct value to use for xon/xoff flow control. Took me a while to figure this out.
It is possible when calling picocom via another program rather than directly
from the command line that it will be called without a controlling terminal
being defined. My circumstances were the expect program spawning picocom on a
pseudo-tty in order to talk to an external serial device.
When this happens the first serial port opened will be adopted as picocom's
controlling tty, and in the case of incorrect baudrate or junk data causes
picocom to die with SIGHUP or similar.
Adding O_NOCTTY to the serial port open flags corrects this problem. This will
be a NOOP in the 99.9% of cases where the user already has a controlling tty.
Patch attached.
Original issue reported on code.google.com by [email protected]
on 7 Oct 2011 at 7:55
Attachments:
This patch adds the -D / --divisor option, which allows a custom divisor to be
specified to the serial driver using the semi-standard
TIOCSSERIAL/serial_struct interface, which is currently specific to Linux.
With this, you can easily specify a custom divisor and achieve custom baud
rates with drivers that support the interface.
A number of Linux drivers will pull in this custom_divisor option to allow a
custom baud rate to be used.
For example, if you set the baud rate to 38400, then the ftdi_sio driver allows
you to specify the custom divisor to achieve a custom baud rate.
This has been tested to work with the ftdi_sio driver.
This interface could potentially be used by *BSD eventually (when/if they
support this interface), but I doubt it. Until all the Unixes figure out a
standard way to do this, this will only work on Linux.
Original issue reported on code.google.com by [email protected]
on 29 Jan 2012 at 4:06
Attachments:
The picocom man page says:
--send-cmd | -s
Specifies the external program (and any arguments to it) that
will
be used for transmitting files.
Default: "sz -vv"
However, the actual default in the source code uses ascii_xfr (which is
provided by minicom). It should use sz by default, as it claims it does,
instead.
Original issue reported on code.google.com by [email protected]
on 13 May 2010 at 4:15
What steps will reproduce the problem?
1. Read Debian bug #734086, which deprecates libdevlock and advises to use
flock(2) on Linux.
2. Look in the picocom source code to see if it uses flock(2).
3.
What is the expected output? What do you see instead?
I hope to see use of flock(). Instead, I see code to do UUCP locks.
What version of the product are you using? On what operating system?
picocom v1.7 on Ubuntu 14.10
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 6 May 2015 at 11:38
My tablet (a Renesas-dual A9 w/ Android 2.3) has a ZTE-MF216 3G module onboard,
perfectly functional for my data connections, but when I try to access the same
on /dev/ttyUSB0 through picocom (cross-complied for ARM using Sourcery G++
Lite) it doesn't respond to commands, though the terminal connection looks
correctly established:
------------------------
# dmesg
...
<6>option 1-1.1:1.0: GSM modem (1-port) converter detected
<6>usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
<6>option 1-1.1:1.1: GSM modem (1-port) converter detected
<6>usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
<6>option 1-1.1:1.2: GSM modem (1-port) converter detected
<6>usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
<6>option 1-1.1:1.3: GSM modem (1-port) converter detected
<6>usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB3
#
# picocom --b 115200 /dev/ttyUSB0
picocom v1.6
port is : /dev/ttyUSB0
flowcontrol : none
baudrate is : 115200
parity is : none
databits are : 8
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv
imap is :
omap is :
emap is : crcrlf,delbs,
Terminal ready
------------------------
It stays there forever, with no feeback, no echo of the AT commands I try to
type, neither I can exit with the escape commands... I need to switch off the
3G module (from System Setting) to exit from the terminal.
Anything that I'm doing wrong?
I'm pretty sure it's not a picocom issue... but I hope someone can help. Thanks.
Original issue reported on code.google.com by [email protected]
on 2 Mar 2012 at 5:17
Describe the proposed feature in detail.
There is no 'make install' to install the binary and the man pages. That would
be useful. It would be best to build with autotools, to add all the
functionality that autotools provides (user-configurable installation
directories, etc).
How and in what cases will the feature be useful?
Easier for users to install picocom and its man page.
Who will benefit from the feature?
Any users and distribution managers who are building from source, who are
familiar with the autotools procedure:
./configure
make
sudo make install
Original issue reported on code.google.com by [email protected]
on 2 Nov 2012 at 5:52
Attempts to receive a file via X-modem and save it to a named location are
failing.
Looks like a cut-n-paste failure in the code where the send_cmd routine is
invoked rather than the receive_cmd.
Patch attached.
Original issue reported on code.google.com by [email protected]
on 7 Oct 2011 at 7:44
Attachments:
Hi,
I don't know why, but sending binary files with either your (repo) software or
minicom is never successful.
Do you plan to fix it or can provide name of references of a serial terminal
program for linux which can work with both plain and binary files?
Regards,
Original issue reported on code.google.com by [email protected]
on 13 Jul 2010 at 8:14
I found a few typos in this header file.
I did a patch, I hope it helps
Original issue reported on code.google.com by [email protected]
on 12 Oct 2009 at 4:19
Attachments:
What steps will reproduce the problem?
1. build with musl libc instead of uclibc/glibc
2.
3.
What is the expected output? What do you see instead?
build vs no build
What version of the product are you using? On what operating system?
1.7, OpenWrt
Please provide any additional information below.
See https://github.com/openwrt/packages/issues/1383 for the output and a fix
Original issue reported on code.google.com by [email protected]
on 16 Jun 2015 at 1:01
I have made a patch so picocom compiles cleanly on OpenBSD (I'm working on a
port).
It is essentially checking for the HIGH_BAUD rate defines and undefining
HIGH_BAUD if they aren't defined.
Original issue reported on code.google.com by [email protected]
on 1 Oct 2011 at 7:40
Attachments:
What steps will reproduce the problem?
1. wait
What is the expected output? What do you see instead?
project webpage still exists.
What version of the product are you using? On what operating system?
n/a
Please provide any additional information below.
Need to move this somewhere, sometime :)
Original issue reported on code.google.com by [email protected]
on 16 Jun 2015 at 1:00
Is this project abandoned?
Original issue reported on code.google.com by [email protected]
on 21 Jul 2010 at 3:46
Currently buffering is used only when *writting* to the serial port. No
buffering (whatsoever) is used when reading from user the terminal, when
reading from the port or when writing to the user terminal. In these cases
the respective file descriptors are read and written a single character at
a time. This is bad and ugly.
Buffering should be added when reading from the port and when writing to
the terminal. Reading from the terminal must remain unbuffered (we should
never delay processing user commands) but even so an attempt should be made
to make read(2) calls handle multiple chars at a time.
Original issue reported on code.google.com by [email protected]
on 2 Jun 2010 at 6:09
Is there a way to send some AT commands to initialize? Can't find anything in the manual or examples.
Has not, practically, been a problem, but it would improve performanc if a single read(2) system call could be used to read multiple bytes (chars) from the standard input (terminal). Currently we do read multiple bytes from the serial port, as well as write multiple bytes to the standard output. Even a small read-buffer (say 16, 32 or 64 bytes) would be adequate.
What steps will reproduce the problem?
1. Use picocom to connect to a serial device (/dev/ttyUSB1)
2.
3.
What is the expected output? What do you see instead?
Expected: picocom opens the serial port for reading/writing
Actual: "FATAL: cannot lock /dev/ttyUSB1: Permission denied"
What version of the product are you using? On what operating system?
picocom 1.7-1, Arch Linux 3.4.6-1
Please provide any additional information below.
/var/lock is now a symlink to /run/lock, which is root:root 0755. A regular
user would not be able to create a lockfile in /run/lock, which it seems
picocom is trying to do. Works fine with the --nolock option or if I manually
change the permissions of /run/lock (but that does not persist after reboot).
Original issue reported on code.google.com by [email protected]
on 25 Jul 2012 at 9:54
Downstream fedora bug at: https://bugzilla.redhat.com/show_bug.cgi?id=732360
Currently picocom locks /run/lock/ but it would be good if it used a subdir for
itself or another locking setup.
Thoughts?
Original issue reported on code.google.com by [email protected]
on 26 Oct 2011 at 8:28
If, when picocom starts, the port's HUPCL is not set, then there is no way for picocom to HUP (drop DTR) when exiting...
Line 221 or so in picocom.1 has a misspelling for the escape option:
.B \f[B]--esacpe\f[] | \f[B]-e\f[]
On OS X the maximum baudrate defined on sys/termios.h is B230400.
Those patches add the ability to detect if the source is compiled on OS X and
address correctly the maximum usable value for the baudrate.
Tested on Snow Leopard (10.6) and Lion (10.7).
Original issue reported on code.google.com by [email protected]
on 2 Mar 2012 at 3:21
Attachments:
G'day Picocom People.
I have quite a few scripts that expect certain command line arguments for Picocom. Most of those were written quite some time ago, or are port of embedded systems. I am sure others have the same issue.
While it is possible to simply fix the scripts, it is trivial to allow picocom accept the same options from older versions.
These options are:
Allow "p" for parity (changed in commit c24a3bc) to still function. When using "p" for parity, simply set the stopbits to "1" (in line with the old behaviour)
(Why didn't stopbits use "o"!?)
Allow "s" for flow control (changed in 18ae438 and as I can see, it was simply to break backwards compatibility)
I was thinking of something like:
*************** parse_args(int argc, char *argv[])
*** 1420,1425 ****
--- 1420,1427 ----
switch (optarg[0]) {
case 'X':
case 'x':
+ case 'S':
+ case 's':
opts.flow = FC_XONXOFF;
break;
case 'H':
*************** parse_args(int argc, char *argv[])
*** 1481,1493 ****
}
break;
case 'p':
switch (optarg[0]) {
case '1':
- opts.stopbits = 1;
break;
case '2':
opts.stopbits = 2;
break;
default:
fprintf(stderr, "Invalid --stopbits: %c\n", optarg[0]);
r = -1;
--- 1483,1504 ----
}
break;
case 'p':
+ opts.stopbits = 1;
switch (optarg[0]) {
case '1':
break;
case '2':
opts.stopbits = 2;
break;
+ case 'e':
+ opts.parity = P_EVEN;
+ break;
+ case 'o':
+ opts.parity = P_ODD;
+ break;
+ case 'n':
+ opts.parity = P_NONE;
+ break;
default:
fprintf(stderr, "Invalid --stopbits: %c\n", optarg[0]);
r = -1;
-- Ben
What steps will reproduce the problem?
1.cross compile the picocom fist
CC=arm-linux-gcc
LD=arm-linux-ld
2.nfs boot or just copy picocom to target board (omap3 beagleboard rev C4)
under picocom folder, run
./picocom
or picocom
or /foldertopicocom/picocom
error ouput
# ./picocom
-/bin/sh: ./picocom: not found
I have tried kernel 2.6.32 and 2.6.35
echo $PATH
# echo $PATH
/sbin:/usr/sbin:/bin:/usr/bin
tried put picocom copy into usr/bin and still not working.
"ls -il"
1085562 -rwxr-xr-x 1 1000 1000 60514 Dec 31 2010 picocom
and file picocom can run too.
What is the expected output? What do you see instead?
i expect to see picocom to run or show cannot run. I see command not found.
What version of the product are you using? On what operating system?
ver 1.6
I use kernel 2.6.32 and 2.6.35 with busybox also tried anstrong
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 31 Dec 2010 at 9:36
Attachments:
Why is the existing code bad or ugly?
With both groff(1) and mandoc(1), the man page throws erorrs. The use of a full
stop at the beginning of a line (i.e. lines 127 and 231) causes groff to think
that it should be interpreted as a macro; not being a valid macro causes that
line to be lost in the output.
Are specific features or classes of features hard to add?
A patch is included that will fix the problem.
What sort of restructuring you propose?
Please consider applying the patch to fix the errors.
Furthermore, if it's acceptable, I'd volunteer to rewrite the manpage in mdoc
format. However, that will add additional complications later for older
operating systems and those that ship without mdoc formatters (namely, Solaris).
Original issue reported on code.google.com by [email protected]
on 15 Sep 2013 at 11:27
Attachments:
Consider adding the following character mappings:
[17]
. Exclude CR, LF and TAB (leave them as is)[0d]
)[0a]
)(If more than one mappings apply for a char, then use a predefined mappings precedence order to decide which to apply. Eg: crlf, crhex
or crhex, crlf
will both map CR -> LF)
It is always possible for read(2) to return -1 with errno set to EAGAIN when
reading from a non-blocking file descriptor, even if select(2) previously told
us it was ready. Catch this condition and do not treat it as a fatal error.
In addition to coping with the above condition, this patch also fixes a problem
encountered when select(2) returns read notifications for both STI and the tty,
and the data read from the STI caused the baud rate to be changed. This would
cause a tcflush() on the tty (which would drop any input data) immediately
before attempting to read(2) from that tty.
Original issue reported on code.google.com by [email protected]
on 12 Oct 2011 at 9:55
Attachments:
I use picocom often and it was missing a small feature for my use. It would be
very handy to be able to have a log of the communications that go through the
cable.
It will be useful for those who use many different systems and that the output
of the terminal is the only way to gather data about that system.
Original issue reported on code.google.com by [email protected]
on 15 Jan 2014 at 8:08
Attachments:
A small but very useful addition would be the possibility to keep a log of
the communication with the terminal device.
Original issue reported on code.google.com by [email protected]
on 5 Oct 2009 at 3:28
Add one argument which will accept the command to execute and then exit the program
I'd recently added custom baud rate support for OSX, but after some more testing, I found out that it not work as expected. I'd tested with:
In most cases, the desired custom baud rate will just be substituted by on of the standard baud rates.
I'll investigate it deeper now and hopefully provide a fix soon.
Currently picocom never stops / delays reading from the standard input (terminal) if data are available. If the output queue is full, data read are discarded. Maybe it would be better if we could delay reading from stdin until the output queue partially drains. This could be useful particularly when the standard input is not a terminal and, possibly, it should be done only in this case...
I'm running 64bit cygwin and compiled/installed picocom. Picocom works from bash flawlessly. Now I'm trying to use a term inside a native 64bit NTEmacs. When I do I get "FATAL: failed to add I/O device: Filedes is not a tty". Any idea what is happening there? I know it's more like an emacs problem but I'm hoping you might be able to point me in the right direction based on the error message. The term access to any interactive source is notoriously problematic under Windows but I hope to get it running anyway. Currently I'm falling back to plink.
Whitespace in code is a bit of a mess (though not formatting, formatting is fine). At some places spaces are used, and TABs are used elsewhere. Also trailing whitespace is present at several lines.
It should be fixed.
.editorconfig
to make indent_style = space
Changes should not affect code formatting.
That would really be great.
After introduction of CMSPAR in term.c picocom fails to compile on FreeBSD
# make
cc -Wall -g -DVERSION_STR=\"2.1a\" -DTTY_Q_SZ=32768 -DHIGH_BAUD -DUSE_FLOCK -DHISTFILE=\".picocom_history\" -DLINENOISE -o linenoise-1.0/linenoise.o -c linenoise-1.0/linenoise.c
cc -Wall -g -DVERSION_STR=\"2.1a\" -DTTY_Q_SZ=32768 -DHIGH_BAUD -DUSE_FLOCK -DHISTFILE=\".picocom_history\" -DLINENOISE -o picocom.o -c picocom.c
cc -Wall -g -DVERSION_STR=\"2.1a\" -DTTY_Q_SZ=32768 -DHIGH_BAUD -DUSE_FLOCK -DHISTFILE=\".picocom_history\" -DLINENOISE -o term.o -c term.c
term.c:847:32: error: use of undeclared identifier 'CMSPAR'
tiop->c_cflag &= ~(PARODD | CMSPAR);
^
term.c:851:22: error: use of undeclared identifier 'CMSPAR'
tiop->c_cflag &= ~CMSPAR;
^
term.c:855:39: error: use of undeclared identifier 'CMSPAR'
tiop->c_cflag |= PARENB | PARODD | CMSPAR;
^
term.c:859:30: error: use of undeclared identifier 'CMSPAR'
tiop->c_cflag |= PARENB | CMSPAR;
^
term.c:862:41: error: use of undeclared identifier 'CMSPAR'
tiop->c_cflag &= ~(PARENB | PARODD | CMSPAR);
^
term.c:893:21: error: use of undeclared identifier 'CMSPAR'
} else if ( flg & CMSPAR ) {
^
6 errors generated.
*** Error code 1
Stop.
Describe the proposed feature in detail.
----------------------------------------
Possibility of cross-compiling picocom for Android,
i.e. against the Bionic libc implementation.
Bionic does not provide tcdrain(); I'm attaching a simple patch
to replace tcdrain() with ioctl() when compiling for Bionic.
The attached patch hunk is taken from
https://github.com/marco-pratesi/android/tree/master/picocom
How and in what cases will the feature be useful?
-------------------------------------------------
This feature will add support for the Android platform.
I'm using it on Nexus 7 (with Cyanogenmod 10.1.2), with a USB On The Go cable
and a USB-Serial adapter, to access the Cisco IOS CLI through the console port
of a Cisco device (router/switch).
Who will benefit from the feature?
----------------------------------
Android users.
Original issue reported on code.google.com by [email protected]
on 26 Aug 2013 at 2:50
Attachments:
After starting picocom, the physical state of RTS is up
on most systems (tested on Linux, OSX and FreeBsd).
When now pressing [C-g]
= Toggle RTS, I got the message *** RTS: up ***
and the physical state of the RTS handshake line won't change.
When now pressing [C-g]
again, then I see *** RTS: down ***
and the physical state of the RTS handshake goes down as expected.
When starting picocom with --lower-rts
command line option, then the behavior is correct. Pressing [C-g]
first time shows *** RTS: up ***
and the physical state of the RTS toggles from down to up.
Same behavior is also with DTR.
Note, that when I press [C-v]
after starting picocom, I got something like:
*** baud: 921600
*** flow: none
*** parity: none
*** databits: 8
*** stopbits: 1
*** dtr: down (up)
*** rts: down (up)
*** mctl: DTR:1 DSR:0 DCD:0 RTS:1 CTS:1 RI:0
(I think, I could provide a PR to fix this issue.)
Hello, @npat-efault
I'd like to execute a list of commands after entering into picocom terminal.
This list is stored as an usual script on my host computer.
Is it possible to write an automated script which will do the following:
Why I need that?
I want to write files to my esp8266 using micropython. So when I connect to my esp using picocom, i can open a file in python command line and write my file line-by-line there. But I have to paste every command (every line) by hand. I want to do that automatically.
Hope you have grasped my idea. Is it possible?
Ubuntu repositories lacks a fresh picocom. Why?
$ sudo apt-get dist-upgrade
...
$ picocom --help
picocom v1.7
Why does picocom enforce that stdin must be a terminal? As far as I can tell, picocom's interaction with stdin (a simple select
/read
loop) shouldn't care what it is, and feeding picocom with a file or pipe would allow it to act as a general-purpose relay to and from a serial device. This would be incredibly useful for test scripts and other automation.
When a longer port name is specified, it's truncated to 127 chars.
Of course, this is really rare case, but I'd run into this issue when using /dev/serial/
serial symlinks in Linux (Kubuntu).
I have to work with a device having a quite long device name, which finally evaluates to something like:
/dev/serial/by-id/usb-Biothentic_II_smartcard_reader_with_fingerprint_sensor._CDCACM_USB_To_RS-232_Emulation_Device_B9E871A4-F213-4DD1-997C-403F073EF126-if00
My current ugly workaround:
I could provide a PR for this issue (replacing strncpy()
by strdup()
like doing for the log filename).
What steps will reproduce the problem?
1. copy&past a larger text into picocom
What is the expected output? What do you see instead?
All text shold be copied to picocom, but picocom stops after about 537 bytes of
input
What version of the product are you using? On what operating system?
Version 1.7 on linux
Please provide any additional information below.
I'm configuring cisco-routers with picocom.
If I do a copy&paste with a bigger config, picocom stops
after about 537 bytes of input.
Original issue reported on code.google.com by [email protected]
on 5 Sep 2012 at 6:31
What steps will reproduce the problem?
1. C-ar to receive a file
2. Enter a file name
What is the expected output? What do you see instead?
Expect the receive command to be executed with the filename specified.
Instead, the send command is executed with the filename specified.
What version of the product are you using? On what operating system?
1.6 Mac OS 10.6.4
Please provide any additional information below.
There appears to be a copy / paste error on line 815 of picocom.c :
{{{
run_cmd(tty_fd, opts.send_cmd, fname, NULL);
}}}
should be
{{{
run_cmd(tty_fd, opts.receive_cmd, fname, NULL);
}}}
Original issue reported on code.google.com by [email protected]
on 24 Jun 2010 at 4:48
E.g. when typing:
$ picocom /dev/ttyUSB0 TRALALA BANANA
picocom starts up same as just
$ picocom /dev/ttyUSB0
So when I just forgot the -b
switch like this:
$ picocom /dev/ttyUSB0 115200
picocom starts with standard baudrate of 9600 without a command line parameter warning.
I made some embedded systems for some applications.
Because of the system clock, I need to use some other baud rates for serial
port communication.
I have reference the linux source code:
https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/termbits.
h which will be included by "termios.h".
There are more valid baud rate to use. I also checked history of the file and
found it was updated since Oct 05, 2012.
So, I checked out the repository and modified the codes and made the patch file
as the attachment.
Original issue reported on code.google.com by [email protected]
on 14 Feb 2014 at 3:45
Attachments:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.