Comments (11)
Hi Josip,
regarding telnet: does the modem actually reboot, or does it crash? If it reboots, did you disconnect the coax cable? If not, the reboot might be caused by your ISP.
Also, please post the output of ls
from the CM_Console>
and CM>
prompts. To switch to CM>
, use the su
command (password is "ubeecable" for your device).
from bcm2-utils.
Do you think I should disconnect the router from coax cable and then try to configure it for open telnet connection? Now when you mention it, it might have crashed instead of rebooted.
CM_Console> ls
! ? REM call cd
dir find_command help history instances
ls man pwd sleep syntax
system_time usage
----
exit reset set show
switchCpuConsole
----
[cm] [emta] [ethernet] [ftpLite] [pingHelper] [power] [system] [thermal]
CM_Console> su
Password: () [] ubeecable
Proceed with caution!
Type 'exit' to return.
CM_Console> ls
! ? REM call cd
dir find_command help history instances
ls man pwd sleep syntax
system_time usage
----
con_high cpuLoad cpuUtilization exit mbufShow
memShow mutex_debug ping read_memory reset
routeShow run_app shell socket_debug stackShow
taskDelete taskInfo taskPrioritySet taskResume taskShow
taskSuspend taskSuspendAll taskTrace usfsShow version
write_memory zone
----
[CmRgMsgPipe] [HeapManager] [HostDqm] [avs] [cm_hal] [docsis_ctl] [dtp]
[embedded_target] [emta] [event_log] [fam] [flash] [forwarder] [ftpLite]
[ip_hal] [itc_hal] [msgLog] [non-vol] [pingHelper] [power] [snmp] [snoop]
[spectrum_analyzer] [thermal]
CM>
from bcm2-utils.
Tried to enable telnet by changing the configs in CM/NonVol/User Interface NonVol>
prompt and then restart the remote access server, still nothing.
from bcm2-utils.
Do you think I should disconnect the router from coax cable and then try to configure it for open telnet connection?
Yes, since your telnet settings might be overriden by your ISP's DOCSIS config file as soon as the modem registers on the provider's network.
I also notice that your device does have support for /flash/
commands, so there's an issue with bcm2dump
somewhere. Please re-run with -L log.txt
, and post the log file, i.e.:
$ bcm2dump -L log.txt -vv dump 192.168.0.1,ubee,ubee flash image1 image1.bin
from bcm2-utils.
That seems like it solved the issue with telnet staying closed. It stays open now, but a different issue than before came up:
bcm2dump v0.9.4-115-gb70bb4b
telnet: received command 253,33
telnet: received command 251,3
telnet: received command 251,1
==> (empty)
==> 'Broadcom Corporation Embedded BFC Telnet Server (c) 2000-2008'
==> (empty)
==> 'WARNING: Access allowed by authorized users only.'
==> (empty)
==> 'Login:'
detected interface: bfc
<== 'ubee'
==> 'ubee'
==> 'Password:'
<== 'ubee'
<== ''
==> 'RG>'
==> 'RG_Console>'
==> 'RG_Console> Lease with clientId: htype=0, value=0c b9 37 19 eb c6 Ip address: 192.168.0.10 has been offered to client!'
==> (empty)
==> 'RG_Console>'
<== ''
==> 'RG_Console>'
<== ''
==> 'RG_Console>'
==> 'RG_Console>'
adjusting dump params: 0x80010000,4 -> 0x80010000,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x80010000'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x80010000'
read_chunk_impl: consuming lines
==> (empty)
==> '80010000: 1242006e 00000000 0c0041f4 24040001 | .B.n......A.$...'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x80624d91,14 -> 0x80624d90,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x80624d90'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x80624d90'
read_chunk_impl: consuming lines
==> (empty)
==> '80624d90: 3c058054 0c48a683 24a5a140 10000011 | <..T.H..$..@....'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x80624d91,8 -> 0x80624d90,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x80624d90'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x80624d90'
read_chunk_impl: consuming lines
==> (empty)
==> '80624d90: 3c058054 0c48a683 24a5a140 10000011 | <..T.H..$..@....'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x8070244c,9 -> 0x8070244c,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x8070244c'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x8070244c'
read_chunk_impl: consuming lines
==> (empty)
==> '8070244c: 14620011 24040007 0c0213bd 26040030 | .b..$.......&..0'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x807023d4,7 -> 0x807023d4,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x807023d4'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x807023d4'
read_chunk_impl: consuming lines
==> (empty)
==> '807023d4: 8fb20008 8fb10004 8fb00000 03e00008 | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x80eb8a91,8 -> 0x80eb8a90,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x80eb8a90'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x80eb8a90'
read_chunk_impl: consuming lines
==> (empty)
==> '80eb8a90: 00000000 24c6ffff 04c3fff2 8ca20000 | ....$...........'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x80f89da0,11 -> 0x80f89da0,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x80f89da0'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x80f89da0'
read_chunk_impl: consuming lines
==> (empty)
==> '80f89da0: afa00038 00408021 3c0281d0 8c43c1f0 | ...8.@.!<....C..'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x82f00014,6 -> 0x82f00014,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x82f00014'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x82f00014'
read_chunk_impl: consuming lines
==> (empty)
==> '82f00014: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x809864d9,11 -> 0x809864d8,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x809864d8'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x809864d8'
read_chunk_impl: consuming lines
==> (empty)
==> '809864d8: 13c00005 0220b021 92430005 92020006 | ..... .!.C......'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x83e05bb8,11 -> 0x83e05bb8,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x83e05bb8'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x83e05bb8'
read_chunk_impl: consuming lines
==> (empty)
==> '83e05bb8: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x80dc48d0,3 -> 0x80dc48d0,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x80dc48d0'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x80dc48d0'
read_chunk_impl: consuming lines
==> (empty)
==> '80dc48d0: a2000001 8e240000 a6000002 a6000004 | .....$..........'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x83f8a9ac,5 -> 0x83f8a9ac,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x83f8a9ac'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x83f8a9ac'
read_chunk_impl: consuming lines
==> (empty)
==> '83f8a9ac: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x810a4390,12 -> 0x810a4390,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x810a4390'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x810a4390'
read_chunk_impl: consuming lines
==> (empty)
==> '810a4390: afbf0000 8c820028 24850014 01003821 | .......($.....8!'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x83f8e8a8,6 -> 0x83f8e8a8,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x83f8e8a8'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x83f8e8a8'
read_chunk_impl: consuming lines
==> (empty)
==> '83f8e8a8: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x83f8ea40,10 -> 0x83f8ea40,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x83f8ea40'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x83f8ea40'
read_chunk_impl: consuming lines
==> (empty)
==> '83f8ea40: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x83f8ecc8,13 -> 0x83f8ecc8,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x83f8ecc8'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x83f8ecc8'
read_chunk_impl: consuming lines
==> (empty)
==> '83f8ecc8: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 32 0x81082fa8'
==> 'RG_Console> /system/diag readmem -s 4 -n 32 0x81082fa8'
read_chunk_impl: consuming lines
==> (empty)
==> '81082fa8: 8fbf0018 8fb50014 8fb40010 8fb3000c | ................'
==> '2164797368: 2410807304 2410741764 2410676224 65011720 | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x81083440,29 -> 0x81083440,32
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 32 0x81083440'
==> 'RG_Console> /system/diag readmem -s 4 -n 32 0x81083440'
read_chunk_impl: consuming lines
==> (empty)
==> '81083440: 24420001 ae020014 72231002 00441821 | $B......r#...D.!'
==> '2164798544: 2411659272 2410741764 2410676224 06295585 | .............`.!'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x812df0e5,24 -> 0x812df0e4,32
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 32 0x812df0e4'
==> 'RG_Console> /system/diag readmem -s 4 -n 32 0x812df0e4'
read_chunk_impl: consuming lines
==> (empty)
==> '812df0e4: 02010002 01000000 30820000 54726965 | ........0...Trie'
==> '2167271668: 1679818752 542458960 544239474 1953702007 | d .. UDP ports w'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x83f8f188,10 -> 0x83f8f188,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x83f8f188'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x83f8f188'
read_chunk_impl: consuming lines
==> (empty)
==> '83f8f188: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x814e8eac,10 -> 0x814e8eac,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x814e8eac'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x814e8eac'
read_chunk_impl: consuming lines
==> (empty)
==> '814e8eac: 2e352e31 2e312e35 00000000 72674970 | .5.1.1.5....rgIp'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x814e953c,10 -> 0x814e953c,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x814e953c'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x814e953c'
read_chunk_impl: consuming lines
==> (empty)
==> '814e953c: 2e372e32 2e322e33 2e300000 70726f78 | .7.2.2.3.0..prox'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x85f00014'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x85f00014'
read_chunk_impl: consuming lines
==> (empty)
==> '85f00014: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x85f00014'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x85f00014'
read_chunk_impl: consuming lines
==> (empty)
==> '85f00014: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x83f8e618,14 -> 0x83f8e618,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x83f8e618'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x83f8e618'
read_chunk_impl: consuming lines
==> (empty)
==> '83f8e618: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
adjusting dump params: 0x85f00014,6 -> 0x85f00014,16
read_chunk_impl: calling do_read_chunk
<== '/system/diag readmem -s 4 -n 16 0x85f00014'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x85f00014'
read_chunk_impl: consuming lines
==> (empty)
==> '85f00014: ffffffff ffffffff ffffffff ffffffff | ................'
read_chunk_impl: done reading lines
==> (empty)
==> 'RG_Console>'
<== ''
==> 'RG_Console>'
==> 'RG_Console> [00:02:47 01/01/1970] [HttpServerThread] BcmEcosSocket::Accept: (BcmSocket) ERROR - INVALID_SOCKET: 353'
<== 'switchCpuConsole'
==> '[00:02:47 01/01/1970] [HttpServerThread] BcmRgHttpServerThread::WaitForConnection: (HttpServerThread) ERROR - Accept() returned an invalid socket handle!!'
==> '[00:02:47 01/01/1970] [Telnet Thread] BcmEcosSocket::Accept: (BcmSocket) ERROR - INVALID_SOCKET: 353'
==> 'accept error'
==> 'switchCpuConsole'
==> (empty)
==> 'Switching console to CM'
==> 'Wait 500 ms for the telnet server to start on the other CPU'
==> 'Switch to the other console completed'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 529000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> '--------------------------------------'
==> 'Scanning (pattern) DS Channel at 552000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 544000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 536000000 Hz...'
==> 'CM>'
<== ''
==> 'CM> =Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 528000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> '--------------------------------------'
==> 'Scanning (pattern) DS Channel at 551000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 543000000 Hz...'
==> 'CM>'
==> 'CM> =Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 535000000 Hz...'
<== '/version'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 527000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> '--------------------------------------'
==> 'Scanning (pattern) DS Channel at 550000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 542000000 Hz...'
profile auto-detection failed
<== '/exit'
==> '=Ubee= switch fAnnexMode'
error: cannot create non-ram rwx object without a profile
context:
==> 'RG_Console>'
<== '/system/diag readmem -s 4 -n 16 0x85f00014'
==> 'RG_Console> /system/diag readmem -s 4 -n 16 0x85f00014'
==> (empty)
==> '85f00014: ffffffff ffffffff ffffffff ffffffff | ................'
==> (empty)
==> 'RG_Console>'
<== ''
==> 'RG_Console>'
==> 'RG_Console> [00:02:47 01/01/1970] [HttpServerThread] BcmEcosSocket::Accept: (BcmSocket) ERROR - INVALID_SOCKET: 353'
<== 'switchCpuConsole'
==> '[00:02:47 01/01/1970] [HttpServerThread] BcmRgHttpServerThread::WaitForConnection: (HttpServerThread) ERROR - Accept() returned an invalid socket handle!!'
==> '[00:02:47 01/01/1970] [Telnet Thread] BcmEcosSocket::Accept: (BcmSocket) ERROR - INVALID_SOCKET: 353'
==> 'accept error'
==> 'switchCpuConsole'
==> (empty)
==> 'Switching console to CM'
==> 'Wait 500 ms for the telnet server to start on the other CPU'
==> 'Switch to the other console completed'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 529000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> '--------------------------------------'
==> 'Scanning (pattern) DS Channel at 552000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 544000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 536000000 Hz...'
==> 'CM>'
<== ''
==> 'CM> =Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 528000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> '--------------------------------------'
==> 'Scanning (pattern) DS Channel at 551000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 543000000 Hz...'
==> 'CM>'
==> 'CM> =Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 535000000 Hz...'
<== '/version'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 527000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> '--------------------------------------'
==> 'Scanning (pattern) DS Channel at 550000000 Hz...'
==> '=Ubee= switch fAnnexMode'
==> 'Scanning (pattern) DS Channel at 542000000 Hz...'
<== '/exit'
==> '=Ubee= switch fAnnexMode'
from bcm2-utils.
Retry with the latest commits. If that still doesn't work, re-run bcm2dump
with -P evw32c
!
from bcm2-utils.
It worked!! thank you very much :)
from bcm2-utils.
Without -P evw32c
?
from bcm2-utils.
Hi Jstjep00:
how do you enable the telnet . i have a ubee product , but i always can not enable the telnet by cm config file though i make the GW online , i can not access any broadcom private mib , so i think my telnet enable configuration was ignored when GW register to CMTS . as i can not telnet , so i can not lunch the bcm2dump binary .
can you share some experience to me ?
thanks
from bcm2-utils.
from bcm2-utils.
Hi jclehner:
do you have the Ubee product all mib files ?
from bcm2-utils.
Related Issues (20)
- Cisco EPC3010 boot process locked HOT 8
- Device profile for TC7210 HOT 1
- Netgear CG3100; progress and things of note HOT 6
- what's the Ubee Cable modem uart console Pin sequence HOT 4
- Finding flash dump functions HOT 5
- Castlenet CBV734EW : Can't dump in bootloader mode HOT 1
- View password telnet protocol Kaon Broadcom HOT 1
- TC7200_Kernel_Image HOT 5
- Bootloader Unlocking HOT 1
- Bricked CAX80, need RG login HOT 1
- TM902S 'ARRIS NonVol Settings' group HOT 5
- Castlenet CBV384Z4-AC1600 Can't dump in bootloader mode HOT 2
- Bisected: group size 0 too small to be valid
- Failed to parse group userif and firewall KAONMEDIA CG2200 CLARO HOT 6
- CGA2121 support HOT 1
- DecryptIng and adding other groups for Arris TM902S
- Side load file with script into original bin file? HOT 1
- Can't dump flash via telnet interface, Arris TM902S HOT 24
- Sagemcom Fast 3890 support HOT 1
- Strange Telnet and SSH interface on Ubee DDW36C HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bcm2-utils.